例如,如果我有
CREATE VIEW viewTest1 AS
SELECT col_a, col_b, col_c, COUNT(1)
FROM table_name
GROUP BY col_a, col_b, col_c
SELECT * FROM viewTest1
另一个是
CREATE VIEW viewTest2 AS
SELECT col_a, col_b, col_c
FROM table_name
SELECT *, COUNT(1) FROM viewTest2
GROUP BY col_a, col_b, col_c
第二个会跑得更快吗?为什么呢?
我的测试结果是第二个更快,我不明白。
谢谢
答案 0 :(得分:2)
使用SQL Sentry Plan Explorer进行更详细的分析执行计划
示例:
<强>语句1 强>
SELECT * FROM viewTest1
<强>声明2 强>
SELECT *, COUNT(1) FROM viewTest2
GROUP BY col_a, col_b, col_c
执行计划两个查询完全相同。因此,两个查询的成本等于
您必须阅读本书SQL Server Execution Plans
答案 1 :(得分:2)
这取决于您使用的数据库引擎的优化程序。某些数据库引擎能够重新组织整个查询,有些则不能。据我所知,Oracle有一个控制重组行为的参数。
理论上永远不会有一个答案。
答案 2 :(得分:1)
不可能有这样的不同。但是,您可以检查执行计划以获取更多费用详情。
您可以将两个查询放在同一个sql窗口中,只需按CTRL+L
键即可执行执行计划。
答案 3 :(得分:1)
我在表格中创建了一个包含超过200k行的数据样本集,执行计划是相同的。