7

在对性能的永无止境的追求(以及我自己的大刀阔斧的经历)中,我学到了一些可能会降低 SQL 语句性能的东西。

Obsessive Compulsive Subqueries Disorder
进行疯狂的类型转换(并将它们嵌套到遗忘中)
Group By 对所述疯狂类型转换的聚合函数在
哪里 fldID(从我的 500 万记录表中选择所有内容)

我通常使用 MSSQL。有哪些工具可用于测试 SQL 语句的性能?这些工具是否内置并特定于每种类型的数据库服务器?或者有没有通用的工具?

4

6 回答 6

9

SQL Profiler(内置):使用 SQL Profiler 进行监控

SQL Benchmark Pro(商业版)

SQL Server 2008 具有新的数据收集器

SQL Server 2005(更高版本)有一个缺失索引动态管理视图(DMV),它非常有用(但仅适用于当前在计划缓存中的查询计划):关于缺失索引功能

还有一个 SQL Server数据库引擎优化顾问,它做了一个合理的工作(只是不要实现它建议的一切!)

于 2009-10-12T16:15:21.820 回答
3

我大多只使用 Profiler 和执行计划查看器

于 2009-10-12T16:15:09.480 回答
1

执行计划是调试查询性能问题时首先要考虑的事情之一。执行计划将告诉您查询的每个部分大致花费了多少时间,并可用于快速识别您是否缺少索引或是否有昂贵的连接或循环。

于 2009-10-12T18:33:23.243 回答
0

MSSQL 有一个数据库调优顾问,它通常会根据调优期间运行的常见查询为表推荐索引,但它不会为您重写查询。

在我看来,经验和实验是编写好的 SQL 查询的最佳工具。

于 2009-10-12T16:15:49.573 回答
0

在 mysql(也可能在其他数据库中)中,您可以EXPLAIN查询以查看数据库服务器对它的看法。这通常用于决定应该创建哪些索引。而且这个是内置的,所以你可以在不安装额外软件的情况下使用它。

于 2009-10-12T16:19:37.800 回答
0

Adam Machanic 有一个名为SqlQueryStress的简单工具,它可能很有用。它旨在用于“针对单个查询运行快速性能测试,以测试想法或验证更改”。

于 2009-10-12T18:23:57.707 回答