ORDER BY子句是否会降低查询性能?如果将列编入索引而不是索引,则会产生多少影响。
答案 0 :(得分:2)
如果查询计划中有一个排序运算符(并且有超过1行),是的,它有一个影响。如果数据已经按照您需要的顺序(聚簇索引或具有查询所需的所有字段的非聚集索引的顺序),则可能不需要排序,但计划中的其他操作可能仍然存在导致排序,以确保数据仍然是正确的顺序。
如果影响多少,请测试一下。进行分类并比较性能。
答案 1 :(得分:1)
@JamesZ是对的。在查询中添加order by
子句时需要考虑很多事项。例如,如果您使用select top 10 * from dbo.Table order by field
,那么说10,000,000行会导致查询溢出到tempdb中,因为它将整个表假脱机到tempdb,然后在您的非索引字段排序后将返回10行。如果您在没有排序的情况下执行相同的选择,结果几乎会立即返回。
在发布order by
子句之前了解表的索引方式非常重要。 CTRL-M
是 SSMS 中的朋友。
答案 2 :(得分:1)