【问题标题】:How can I learn to optimize SQL queries [closed]我如何学习优化 SQL 查询 [关闭]
【发布时间】:2011-04-13 17:26:15
【问题描述】:

我知道如何编写SQL 查询并且可以得到我需要的结果。但有时我的查询速度很慢,我不完全明白为什么。

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

【问题讨论】:

  • 这有什么好争论的?
  • 这不应该是社区 wiki,例如“哪本书是 C 的推荐书?”
  • 您主要对 SQLServer 查询优化感兴趣,还是对其他 DBMS 的优化感兴趣?这些技术往往因 SQL 方言而异。
  • 我正在寻找与平台无关的建议。我现在意识到有许多特定于平台的优化,我可能需要针对我的特定平台进行优化。但一开始,我只是想了解如何编写格式良好的查询。

标签: sql query-optimization


【解决方案1】:

使用表可以使用的索引,如果您有 SQL Server,还可以在查询上运行数据库优化顾问。

【讨论】:

    【解决方案2】:

    我想说的主要是:

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

    【讨论】:

    • +1 很好地涵盖了它。
    • 关于索引,我想补充一下什么是覆盖索引。了解功能和过滤/部分索引也可能很有用,尽管它们相当晦涩,并且没有得到广泛支持。
    【解决方案3】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-08-19
      • 2010-10-10
      • 2018-11-16
      • 1970-01-01
      • 2014-07-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多