奇怪的order by

来源:互联网 发布:hadoop推荐算法 编辑:程序博客网 时间:2024/05/29 07:23






orderId 是聚集主键。

很奇怪吧, 带CAST居然比不带CAST还快。

而且仅仅是列出的字段改了, 跟排序有什么关系?

原因:

1. SQL Server排序时,先取的是列出的字段, 而不是相关表的字段名, 两者有重名时取的是前者(从执行计划的 Order By Expr1005 排序 可以看出它是按表达式来排序了);

2. 排序时最好是用二段式( 表名或别名.字段 ),这样才能明确指定为字段名;

3. 这个是特例, 按 orderId 主键排序反而慢, 下面是唐总的原话:

第一个查询没写2段式, 是对结果集的排序,结果集是无序的,所以要sort 和并行
第二个,有聚集索引,不需要sort 。OP 认为不需要并行。

后面慢慢领会。

0 0