我听说使用'select *'会增加SQL Server建立查询执行计划的时间,因为它必须找出哪些列出现在被引用的表上。这同样适用于基于视图而不是表的查询吗?从构建执行计划的角度来看,'select *'有什么影响?
回答
是;列发现过程仍然必须发生。 “select *
”决不能用于生产应用程序或流程。您应该始终明确定义您要检索的特定数据。
我敢打赌,在这两种情况下,时间都是可以忽略的;但是,您应该避免选择*因其他原因。
使用select *可以返回更多的数据,那么您可能实际需要哪些数据,这取决于数据可能很重要。那么如果你删除了一列,那么你的查询可能仍然有效;但是,使用代码可能会失败。您确实无法确定somone是否在使用该列。
时间微乎其微。是的,如果它适用于表格,它适用于视图。
但是在做SQL的12年中,我还没有看到通过显式命名列来加速查询,而不是使用*
。
在生产代码,我不使用*
,但这是使代码的意思是说,没有效率的原因,因为为了能够决定的事情结合的结果,当设定
在生产观,我如果视图的意图(如果“我的意思是说”)是“引入所有列”,那么将使用*
;这样,重新编译一个视图将会选择表格变化。在视图中顺序无关紧要;只在客户端查询,可能使用的视图。
关于编辑:让我注意一个视图定义被解析一次(直到它被重新编译),当视图是创建,而不是当它被使用。因此,从*
到column1, c2, d3, foobar
的一小部分时间发生一次,在create view
发送到数据库服务器时。
现在,将所有列带回到客户端将比仅回收一个(尽管通常不会太多)慢。但这是一个不同的问题。
没有区别的查询计划的条款,但明确定义列被认为是有许多原因的良好做法,其中包括:
- 将列于表不会打破依赖于旧代码旧的列设置。
- 从不需要的列中选择数据意味着更多的数据传输,这通常是从数据库获取数据的最慢部分。
想象一下,你有一个像这样的表:
CREATE TABLE t_test (id INT NOT NULL PRIMARY KEY, value1 INT, value2 INT, aux_value VARCHAR(200))
CREATE INDEX ix_test_values ON (value1, value2)
然后要选择一定范围内的所有值:
SELECT value1, value2
FROM t_test
WHERE value1 BETWEEN 10 AND 20
在这种情况下,SQL Server
只会扫描索引ix_test_values
。你想知道的一切都包含在这个索引中,这就是为什么只有是必需的。
现在您发出:
SELECT *
FROM t_test
WHERE value1 BETWEEN 10 AND 20
SQL Server
现在需要选择具有value1
和value2
沿id
和aux_value
。这些值不包含在索引中,这就是为什么对于每个索引叶SQL Server
应该查看表本身并从表页中检索值。
这可能需要比简单索引扫描长4
至10
倍,具体取决于表结构的复杂程度以及有多少页适合内存。
我一直在使用“SELECT *”将增加 到时间的SQL Server听说才能建立 查询执行计划,因为它有 找出哪些列上存在 引用的表。
想一想。什么是SQL Server执行,当您发送:
SELECT ID, col1, col2, col3
FROM table
上述声明意味着它不会检查,看看是否ID,COL1,COL2等存在于表中 - 它只会相信你的话它?天哪不! :D
它将查看系统目录以查看这些列是否存在。事情,而在内部,几乎是相同的说法:
SELECT * FROM table
有充足的理由不使用 SELECT *(他们已经在这个名单至今,一直枚举),但声称这增加了可衡量的,有意义的查询解析时间的开销是非常愚蠢的。所以如果有人试图告诉你,请纠正它们:)
- 1. 从嵌入的角度来看,Bigloo和ECL有什么不同?
- 2. 从设计的角度来看,Log()和Log(LogLevel)之间有什么区别吗?
- 3. 执行计划 - CTRL + L只显示行数影响
- 4. 为什么圆弧角没有影响
- 5. 是否有可能通过查看执行计划来了解为什么我的查询速度太慢
- 6. 从SOA角度来看Registry和Repository之间有什么区别?
- 7. FQN如何影响查询执行计划缓存?
- 8. SQL Server执行计划显示什么?
- 9. 什么是从TCP的角度来看WCF的webHTTP绑定?
- 10. 什么是xdoclet? (从C程序员的角度来看)
- 11. 从程序员的角度来看fatwire是什么?
- 12. 为什么SELECT语句会影响MySQL中的查询执行和性能?
- 13. ngOnInit varible change为什么不影响角度为2/4的html?
- 14. Android构建目标对最终APK有什么影响?
- 15. 从数学的角度来看,什么是分布式算法的运行?
- 16. 计划执行代码在未来
- 17. 从外行的角度来看,Java中'静态'是什么意思?
- 18. universal.angular.io vs prerender.io从googlebot的角度来看
- 19. 从内核的角度来看,GLI和CLI在Linux中有什么区别
- 20. 从配置管理的角度来看,在自动构建中要做的最好的事情是什么?
- 21. Maven执行计划
- 22. 什么影响Hbase性能
- 23. SQL执行计划
- 24. Yii2 - 这对执行查询有什么影响吗?如果是比什么
- 25. 加速度计读数对电池的影响是什么?
- 26. URLConnection.setDoOutput()究竟影响什么?
- 27. 在MySQL中结合SELECT DISTINCT和UNION DISTINCT - 有什么影响?
- 28. 计划执行程序的计划方法只执行一次
- 29. SQL Server查询执行计划重建
- 30. 什么是执行计划中的并行(分发流)