Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 将查询分割成更小的视图会加快速度吗?_Sql_Sql Server 2008_Optimization_Query Optimization - Fatal编程技术网

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,谢谢。你有没有试着查看两个问题的执行计划?对不起,我知道如何调出执行计划,但我不知道如何阅读执行计划对不起,我知道如何调出执行计划,但我不知道如何阅读执行计划对不起,我知道如何调出执行计划,但我不知道如何阅读执行计划执行计划