首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> SQL Server 資料庫 >> 關於SqlServer

四大主流資料庫隨機查詢語法速查:SQL Server、MySQL、Oracle、Access

     編輯:關於SqlServer

核心語法對照表

資料庫隨機取 N 筆語法關鍵函數/機制
SQL Server SELECT TOP N * FROM Table ORDER BY NEWID() NEWID() 生成唯一識別碼,每行產生隨機 GUID 排序
MySQL SELECT * FROM Table ORDER BY RAND() LIMIT 10 RAND() 返回 0~1 隨機浮點數,配合 LIMIT 截取
Oracle SELECT * FROM (SELECT * FROM t ORDER BY DBMS_RANDOM.VALUE) WHERE ROWNUM < 10 DBMS_RANDOM.VALUE 產生隨機值,子查詢排序後用 ROWNUM 截取
Access
Dim r
Randomize
r = Rnd
SQL = "SELECT TOP 10 * FROM Table ORDER BY Rnd(" & r & "-ID)"
VBA Rnd() 配合欄位值產生偽隨機排序,ID 可換為任何數值欄位

效能與適用場景提醒

  • SQL Server:NEWID() 掃描全表,百萬級資料較慢,可考慮 TABLESAMPLE 或應用層抽樣
  • MySQL:ORDER BY RAND() 會建立臨時表並檔案排序,大表效能極差,建議改用 WHERE RAND() < (SELECT ((10/COUNT(*))*10) FROM Table) 等近似算法
  • Oracle:子查詢全表排序同樣有效能壓力,大數據量可用 SAMPLE 子句(區塊抽樣)
  • Access:僅適用小型桌面資料庫,非生產環境首選

最佳實踐建議

  1. 小表(< 1 萬筆):直接使用上述標準語法
  2. 中大表:應用層先取得主鍵 ID 範圍,隨機產生 ID 清單再 IN 查詢
  3. 統計抽樣:使用資料庫內建抽樣功能(如 SQL Server TABLESAMPLE(10 PERCENT)、Oracle SAMPLE(10))
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved