我如何学习优化SQL查询

时间:2010-09-17 13:05:00

标签: sql query-optimization

我知道如何编写SQL个查询,并且可以获得我需要的结果。但有时我的查询很慢,我不完全理解为什么。

学习编写有效查询和优化我已编写的查询有哪些好资源?

5 个答案:

答案 0 :(得分:21)

我会说主要的事情是:

  • 通过阅读Celko's等平台中立的书籍,了解SQL的基于集合的性质;这将有助于您避免犯新手错误,例如使用不需要它们的游标(或其他迭代方法)。
  • 了解规范化的基础知识以及何时进行非规范化;高效的查询始于组织良好的数据。
  • 了解索引可以提供帮助的位置以及它们不能提供的位置;例如,掌握数据的基数如何影响索引效率,SARGable查询是什么,以及何时使用多列索引。
  • 了解如何为您的平台使用EXPLAIN PLAN或其等效的;通过观察编译查询的方式和消耗的资源,您将更好地理解瓶颈。
  • 了解特定于平台的方法,例如索引/物化视图,全文索引以及分页和处理分层数据的方法。

答案 1 :(得分:6)

我必须使用它已经有一段时间了,但我发现SQL Tuning对我几年前的工作非常有用。

答案 2 :(得分:2)

答案 3 :(得分:1)

对于MySQL特定信息,参考手册的chapter 7都是关于优化的。 §7.3,特别涵盖MySQL statement optimization。 PostgreSQL wiki同样专门针对该RDBMS记录optimizing。微软的“How To: Optimize SQL Queries”已经退休;我不确定是否有更新的文件。对于各种版本,Oracle在query optimization上有几个文档。

答案 4 :(得分:0)

使用表可以使用索引的索引,如果您有SQL Server,还可以在查询上运行Database Tuning Advisor。