【问题标题】:How to know if the SQL query is efficent according to the setup of the tables in the db?如何根据db中表的设置知道SQL查询是否有效?
【发布时间】:2012-05-10 12:26:15
【问题描述】:

有什么方法可以检查我的 sql 查询是否处于最佳状态?我正在使用 sql server 2008。例如我想知道我的查询是否达到了预期的索引。

【问题讨论】:

    标签: sql-server sql-server-2008 sqlperformance


    【解决方案1】:

    是的,包括“实际执行计划”。它位于 SQL Management Studio 的查询菜单中。 执行计划将显示查询使用的连接和索引类型。

    【讨论】:

      【解决方案2】:

      使用执行计划来分析您的查询。有关更多信息,请参阅本教程: http://www.simple-talk.com/sql/performance/execution-plan-basics/

      【讨论】:

        【解决方案3】:

        虽然小伙伴们已经建议分析执行计划(确实如此!),但还有另一种方法对不熟悉执行计划的人更友好,在 MSSMS 中,突出显示您的查询并右键单击选择并点击“Analyse Query in Database Tuning Advisor”——耐心等待顾问打开和数据库选择选项卡打开,打开后,选择与查询交互的数据库,然后单击“开始分析”。

        这将对所有表、连接等进行粗略检查,它将分析执行计划并告诉您哪些索引“可能”有助于加快查询速度(即避免表扫描)。

        但不要盲目接受它的建议,首先备份您的数据库,运行分析器 - 应用建议,如果您的查询表现更好,则进行基准测试 - 冲洗并重复。

        例如,如果您的查询正在读取大型表,您可能会发现优化顾问建议创建一个索引,这将花费您大量的磁盘空间,但只会获得较小的速度提升——这是您必须要做的地方问“值得吗?” – 这就是为什么尝试分析器的建议通常是个好主意!

        在测试之间,确保清除缓存以确保获得准确的结果:

        DBCC FREEPROCCACHE; 
        DBCC DROPCLEANBUFFERS; 
        

        另外,为了更准确的基准测试,使用SET STATISTICS TIME ON; - 不要依赖 MSSMS 中的计数器 - 它有时会滞后。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2013-04-14
          • 2021-12-07
          • 2020-03-12
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多