提前声明,我对SQL查询中的算法知之甚少,请原谅我的无知。
我的问题是:如何评估特定SQL查询的性能?哪些指标被考虑?
例如:
SELECT * FROM MyTable;
并且
SELECT * FROM MyTable UNION SELECT * From MyTable;
我猜第二个查询虽然返回相同的结果,但速度要慢得多。但是,有什么方法可以评估这两个查询并决定哪一个更好,以及为什么呢?
是否有工具可以做到这一点?是否有任何类型的SQL堆栈跟踪?等等...
谢谢。
提前声明,我对SQL查询中的算法知之甚少,请原谅我的无知。
我的问题是:如何评估特定SQL查询的性能?哪些指标被考虑?
例如:
SELECT * FROM MyTable;
并且
SELECT * FROM MyTable UNION SELECT * From MyTable;
假设您正在谈论SQL Server,如果您正在使用SQL Server管理工具,则可以尝试“显示估计执行计划”和/或“包括实际执行计划”(从查询菜单中选择)。
两者的区别在于第一个不会执行查询,而第二个会执行查询。所以第二个更准确,但是如果您只想执行“轻量级”的查询,则第一个很有用。
两者都显示执行树。您可以将鼠标悬停在每个节点上并查看统计信息。 用于比较的是“估算子树成本”(成本越高越糟糕)。
希望这对您有所帮助。