性能调优SQL - 如何?

Mat*_*lie 10 sql performance

一个性能如何调优SQL查询?

  • 可以使用哪些技巧/工具/概念来更改SQL查询的性能?
  • 如何量化收益?
  • 需要注意什么?


可以使用哪些技巧/工具/概念来更改SQL查询的性能?

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


绩效如何量化?

  • 读?
  • CPU时间?
  • 不同版本一起运行时的"%Query Cost"?
  • 还要别的吗?


需要注意什么?

  • 是时候制定执行计划了吗?(存储过程与内联查询)
  • 存储过程被迫重新编译
  • 对小数据集进行测试(查询是线性扩展还是平方律等?)
  • 缓存先前运行的结果
  • 优化"正常情况",但伤害"最坏情况"
  • 什么是"参数嗅探"?
  • 还要别的吗?


主持人请注意: 这是一个很大的问题,我应该把它分成多个问题吗?

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

Bre*_*zar 8

我非常喜欢"专业SQL Server 2005性能调优"一书来回答这个问题.这是Wiley/Wrox,不,我不是作家,呵呵.但它解释了你在这里要求的很多东西,以及硬件问题.

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