性能调优SQL-如何?

性能调优SQL-如何?,sql,performance,Sql,Performance,性能如何调整SQL查询? 可以使用哪些技巧/工具/概念来更改SQL查询的性能 如何量化收益 一个人需要注意什么 可以使用哪些技巧/工具/概念来更改SQL查询的性能? 使用索引?它们在实践中是如何工作的 标准化与非标准化数据?性能与设计/维护的权衡是什么 预处理中间表?是用触发器还是批处理作业创建的 重新构造查询以使用临时表、子查询等 将复杂查询拆分为多个查询并合并结果 还有别的吗 如何量化绩效? 阅读 CPU时间 不同版本同时运行时的“%Query Cost” 还有别的吗 需要

性能如何调整SQL查询?

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

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

  • 使用索引?它们在实践中是如何工作的
  • 标准化与非标准化数据?性能与设计/维护的权衡是什么
  • 预处理中间表?是用触发器还是批处理作业创建的
  • 重新构造查询以使用临时表、子查询等
  • 将复杂查询拆分为多个查询并合并结果
  • 还有别的吗

如何量化绩效?

  • 阅读
  • CPU时间
  • 不同版本同时运行时的“%Query Cost”
  • 还有别的吗

需要注意什么?

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

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

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

我非常喜欢《专业SQL Server 2005性能调优》一书来回答这个问题。是Wiley/Wrox,不,我不是作家,呵呵。但它解释了您在这里要求的许多事情,以及硬件问题


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

编写可搜索查询是需要的事情之一,如果您不编写可搜索查询,那么优化器就无法利用索引。这里有一个例子,这个查询从24小时变为36秒,当然你还需要知道这3个连接之间的区别

循环连接, 散列连接, 合并联接


请参见此处:

以下是一些基本步骤,我们可以按照这些步骤来提高性能:

  • 检查pk和fk中涉及的表的索引,如果仍然需要时间索引查询中存在的列
  • 每次操作后都会修改所有索引,因此请不要为每一列编制索引
  • 在批量插入之前,请删除索引,然后重新创建索引
  • 慎选
  • 使用if exists而不是count
  • 在控告dba之前,首先检查网络连接

  • +1我同意一本好书是一个很好的步骤,我喜欢sql server 2005内部的性能调优