【问题标题】:SQL Server Rules for Optimizing Sort?SQL Server 优化排序规则?
【发布时间】:2011-07-07 19:20:38
【问题描述】:

我有一个复杂的 MSSQL 2008 查询,显示计划在排序操作中有 40% 的工作(有几 mil 行,查询执行前 15000 行),计划的其余部分是索引查找和扫描.

如果我删除TOP 子句,查询将下降到一秒钟。但我需要TOP。有哪些经验法则可以巧妙地优化此 SORT 需求?

【问题讨论】:

  • 您的 ORDER BY 是否包含任何函数?
  • order by 中没有函数。
  • 等等,order by 实际上是一个子查询(linq-to-sql 做了这个垃圾查询)。
  • 你能告诉我们execution plan吗?

标签: sql-server sql-order-by sql-execution-plan


【解决方案1】:

您排序的所有列都应该被索引。仅此一项就可以减少 SQL Server 在执行查询时花费时间进行排序的需要(因为它们已经通过索引进行了排序)

唯一的缺点是更多的索引 = 更慢的插入。

【讨论】:

  • 是的,但不能保证使用索引 -- 特别是如果 ORDER BY 包含包装在函数中的列。
猜你喜欢
  • 2011-05-05
  • 2012-06-08
  • 2010-10-07
  • 2020-12-16
  • 2012-01-21
  • 2014-08-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多