程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> 其他數據庫知識 >> 更多數據庫知識 >> 在sql中不指定Order by排序是按照主鍵嗎,sqlorder

在sql中不指定Order by排序是按照主鍵嗎,sqlorder

編輯:更多數據庫知識

在sql中不指定Order by排序是按照主鍵嗎,sqlorder


在sql中不指定Order by,排序是按照主鍵嗎?答案是不一定。舉個例子:

查詢AttendanceEmpRank表,主鍵是AttendanceEmployeeRankId,而且是聚集索引

1

執行下面的語句,發現第一句不指定Order by的結果跟第二句不一樣。

2

再看看執行計劃,我們可以知道,第一句用到的是Date索引,而第二句用的是主鍵索引.

3

再看看另一組sql和查詢結果:

4

執行計劃中用到的索引也是不同的:

5

所以得出結論:在不指定Order by的情況下,sqlserver會根據執行計劃實際查詢方式來得到數據,而執行計劃會根據sql中很多的因素(的查詢列,where條件,order by等)而使用不同的索引,最終出來的結果很可能是不同的。


sql server如果不使用order by子句,查詢返回的結果是按照什排序的

如果不指定order by 子句,則查詢結果的順序不確定。並一定是按主鍵。查詢優化器會根據實際情況生成執行計劃。排序需要成本的,而且成本可能不小。如果沒有明確指定order by子句,則查詢結果的順序不確定。
如果希望按某種順序返回結果,必須明確指定order by子句。
 

sql語句select得到的數據是不是默認都是根據主鍵id排序的?

這跟你主鍵是沒有關系的,如果是堆組織表,排序只是針對主鍵索引的排序,在數據表中並沒有對主鍵進行排序,數據的順序還是要看你數據存儲在哪個塊裡面
 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved