正如标题所言在sql中不指定Order by,排序是按照主键吗?答案是不一定的,下面有个示例,大家可以参考下 在sql中不指定Order by,排序是按照主键吗?答案是不一定。举个例子: 查询

正如标题所言在sql中不指定Order by排序是按照主键吗?答案是不一定的,下面有个示例,大家可以参考下      

在sql中不指定Order by,排序是按照主键吗?答案是不一定。举个例子:

查询AttendanceEmpRank表,主键是AttendanceEmployeeRankId,而且是聚集索引

在sql中不指定Order by排序是按照主键吗(sql order by 指定顺序)  sql Order 排序 第1张

执行下面的语句,发现第一句不指定Order by的结果跟第二句不一样。

在sql中不指定Order by排序是按照主键吗(sql order by 指定顺序)  sql Order 排序 第2张

再看看执行计划,我们可以知道,第一句用到的是Date索引,而第二句用的是主键索引.

在sql中不指定Order by排序是按照主键吗(sql order by 指定顺序)  sql Order 排序 第3张

再看看另一组sql和查询结果:

在sql中不指定Order by排序是按照主键吗(sql order by 指定顺序)  sql Order 排序 第4张

执行计划中用到的索引也是不同的:

在sql中不指定Order by排序是按照主键吗(sql order by 指定顺序)  sql Order 排序 第5张

所以得出结论:在不指定Order by的情况下,sqlserver会根据执行计划实际查询方式来得到数据,而执行计划会根据sql中很多的因素(的查询列,where条件,Order by等)而使用不同的索引,最终出来的结果很可能是不同的。

 
转载请说明出处
知优网 » 在sql中不指定Order by排序是按照主键吗(sql order by 指定顺序)

发表评论

您需要后才能发表评论