Sql 将查询分割成更小的视图会加快速度吗?
例如,如果我有Sql 将查询分割成更小的视图会加快速度吗?,sql,sql-server-2008,optimization,query-optimization,Sql,Sql Server 2008,Optimization,Query Optimization,例如,如果我有 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 G
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
第二辆会跑得更快吗?为什么?
我的测试结果是第二个更快,我不明白
谢谢你不可能有如此不同的结果。但是,您可以查看执行计划以了解更多的成本详细信息
您可以将两个查询放在同一个sql窗口中,只需按执行计划的
CTRL+L
键。不能有这样的不同。但是,您可以查看执行计划以了解更多的成本详细信息
您可以将两个查询放在同一个sql窗口中,只需按执行计划的CTRL+L
键。用于更详细的分析执行计划
例如:
声明1
SELECT * FROM viewTest1
声明2
SELECT *, COUNT(1) FROM viewTest2
GROUP BY col_a, col_b, col_c
执行计划两个查询完全相同。因此,两个查询的成本相等
您必须阅读本书了解更详细的分析执行计划
例如:
声明1
SELECT * FROM viewTest1
声明2
SELECT *, COUNT(1) FROM viewTest2
GROUP BY col_a, col_b, col_c
执行计划两个查询完全相同。因此,两个查询的成本相等
您必须阅读本书,这取决于您使用的数据库引擎的优化器。有些数据库引擎能够重新组织整个查询,有些则不能。据我所知,Oracle有一个控制重组行为的参数
因此,理论上永远不会有一个单一的答案。这取决于您使用的数据库引擎的优化器。有些数据库引擎能够重新组织整个查询,有些则不能。据我所知,Oracle有一个控制重组行为的参数
因此,理论上永远不会有一个单一的答案。我创建了一个样本数据集,表中有20多万行,执行计划是相同的
我创建了一组样本数据,表中有超过200000行,执行计划完全相同
您使用的是什么rdbms?sqlserver?mysql?神谕或者什么?哦,对不起,我是想问一般的或者理论上的问题,我不知道有什么不同。我正在使用SQL server 2008 R2,谢谢。您是否尝试查看这两个查询的执行计划?抱歉,我知道如何显示执行计划,但我不知道如何阅读执行计划您正在使用的rdbms?sqlserver?mysql?神谕或者什么?哦,对不起,我是想问一般的或者理论上的问题,我不知道有什么不同。我使用的是SQL server 2008 R2,谢谢。你有没有试着查看两个问题的执行计划?对不起,我知道如何调出执行计划,但我不知道如何阅读执行计划对不起,我知道如何调出执行计划,但我不知道如何阅读执行计划对不起,我知道如何调出执行计划,但我不知道如何阅读执行计划执行计划