在永无止境的性能搜索中(以及我自己的流氓体验),我学到了一些可能会降低SQL语句性能的方法。
强迫性子查询障碍
做疯狂的类型转换(并将这些转换为遗忘)
Group By关于所述疯狂类型转换的聚合函数
其中fldID(从我的5mil记录表中选择一切)
我通常使用MSSQL。有哪些工具可用于测试SQL语句的性能?这些工具是否内置并且特定于每种类型的DB服务器?或者是否有通用工具?
答案 0 :(得分:9)
SQL事件探查器(内置):Monitoring with SQL Profiler
SQL Server 2008具有新的Data Collector
SQL Server 2005(以后版本)缺少索引动态管理视图(DMV),它非常有用(但仅适用于计划缓存中当前的查询计划):About the Missing Indexes Feature。
还有SQL Server Database Engine Tuning Advisor可以完成合理的工作(只是不实现它建议的所有内容!)
答案 1 :(得分:3)
我主要只使用Profiler和执行计划查看器
答案 2 :(得分:1)
Execution Plans是首先要考虑的事情之一。执行计划将告诉您在查询的每个部分中大致花费了多少时间,并且可以用于快速识别您是否缺少索引或者是否有昂贵的连接或循环。
答案 3 :(得分:0)
MSSQL有一个数据库调优顾问程序,它通常会根据在调优期间运行的常见查询推荐表的索引,但是它不会为您重写查询。
在我看来,经验和实验是编写优秀SQL查询的最佳工具。
答案 4 :(得分:0)
在mysql中(也可能在其他数据库中),您可以EXPLAIN
查询以查看数据库服务器对它的看法。这通常用于确定应创建哪些索引。这是一个内置版本,因此您可以在不安装其他软件的情况下使用它。
答案 5 :(得分:0)
Adam Machanic有一个名为SqlQueryStress的简单工具,可能会有用。它旨在用于“针对单个查询运行快速性能测试,以便测试想法或验证更改”。