衡量SQL查询的性能

3

提前声明,我对SQL查询中的算法知之甚少,请原谅我的无知。

我的问题是:如何评估特定SQL查询的性能?哪些指标被考虑?

例如:

SELECT * FROM MyTable;

并且

SELECT * FROM MyTable UNION SELECT * From MyTable;

我猜第二个查询虽然返回相同的结果,但速度要慢得多。但是,有什么方法可以评估这两个查询并决定哪一个更好,以及为什么呢?
是否有工具可以做到这一点?是否有任何类型的SQL堆栈跟踪?等等...
谢谢。

1
有一些书籍和网站专门介绍这个主题,例如http://www.sql-server-performance.com/。 - Adriaan Stander
2个回答

2
假设你在谈论的是SQL Server(你没有具体说明...):
你需要研究SQL Server Profiler——最好的介绍是一个名为“掌握SQL Server Profiler”的六部分网络研讨会系列,Brad MacGehee将向您展示如何开始使用Profiler以及从中获得什么。
Red-Gate Software还出版了一本免费电子书《掌握SQL Server Profiler》(同样由Brad编写)。

1
一定要使用关键字 profiler。如果你搜索一下,你也可以了解到它们,然后将其集成到你的环境中,这样你就可以统计你执行的查询类型。 - ahmet alp balkan
1
太好了。这是一个很棒的起点。谢谢! - Eric

1

假设您正在谈论SQL Server,如果您正在使用SQL Server管理工具,则可以尝试“显示估计执行计划”和/或“包括实际执行计划”(从查询菜单中选择)。

两者的区别在于第一个不会执行查询,而第二个会执行查询。所以第二个更准确,但是如果您只想执行“轻量级”的查询,则第一个很有用。

两者都显示执行树。您可以将鼠标悬停在每个节点上并查看统计信息。 用于比较的是“估算子树成本”(成本越高越糟糕)。

希望这对您有所帮助。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接