在sql中不指定Order by,排序是按照主鍵嗎?答案是不一定。舉個例子:
查詢AttendanceEmpRank表,主鍵是AttendanceEmployeeRankId,而且是聚集索引
執行下面的語句,發現第一句不指定Order by的結果跟第二句不一樣。
再看看執行計劃,我們可以知道,第一句用到的是Date索引,而第二句用的是主鍵索引.
再看看另一組sql和查詢結果:
執行計劃中用到的索引也是不同的:
所以得出結論:在不指定Order by的情況下,sqlserver會根據執行計劃實際查詢方式來得到數據,而執行計劃會根據sql中很多的因素(的查詢列,where條件,order by等)而使用不同的索引,最終出來的結果很可能是不同的。