2009-01-21 44 views
9

一种性能如何调整SQL查询?性能调优SQL - 如何?

  • 什么技巧/工具/概念可以用来改变SQL查询的性能?
  • 如何量化好处?
  • 需要注意什么?


什么名堂/工具/概念可以用来改变一个SQL查询的性能?

  • 使用索引?他们如何在实践中工作?
  • 标准化与非标准化数据?性能与设计/维护的权衡是什么?
  • 预处理的中间表?创建触发器或批处理作业?
  • 重组查询以使用临时表,子查询等?
  • 将复杂查询分解为倍数和UNION结果?
  • 还有什么?


如何表现进行量化?

  • Reads?
  • CPU时间?
  • 当不同的版本一起运行时,“查询成本”?
  • 还有什么?


这是什么一个需要小心的?

  • 生成执行计划的时间? (存储特效VS嵌入式查询)
  • 存储的特效被迫重新编译
  • 测试对小数据集(请查询线性扩展,或方形的法律等?)以前运行的
  • 结果被缓存
  • 优化“正常情况”,但损害“最坏情况”
  • 什么是“参数嗅探”?
  • 还有什么?


注到主持人: 这是一个巨大的问题,我应该已经达到多个问题拆呢?

注为了响应者: 因为这是一个巨大的问题,请参考其他问题/答案/文章,而不是写冗长的解释。

回答

7

我真的很喜欢“Professional SQL Server 2005 Performance Tuning”一书来回答这个问题。这是Wiley/Wrox,不,我不是作者,嘿。但它解释了很多你在这里要求的东西,还有硬件问题。

但是,这个问题的方式,超出了可以在像这样的评论框中回答的东西的范围。

+0

+1我同意一本好书就是一个很好的一步,我很喜欢里面的SQL Server 2005的性能调整 – SQLMenace 2009-01-21 00:18:19

0

这里是我们可以按照提高性能的一些基本步骤:

  1. 检查所涉及表的pk和fk中的索引,如果它仍然花费时间索引查询中存在的列。
  2. 所有索引在每次操作后都会修改,因此不要对每列进行索引
  3. 批次插入之前删除索引并重新创建索引。
  4. 选择谨慎
  5. 使用if exists代替数
  6. 指责DBA首先检查网络连接之前