- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
如果这是一个重复的和/或明显的问题,请原谅我,但我无法在 stackoverflow 或在线其他地方找到满意的答案。
使用 Microsoft SQL Server,我有一个如下所示的嵌套选择查询:
select *
into FinalTable
from
(select * from RawTable1 join RawTable2)
join
(select * from RawTable3 join RawTable4)
不使用嵌套选择,可以使用临时表编写查询,如下所示:
select *
into Temp1
from RawTable1 join RawTable2
select *
into Temp2
from RawTable3 join RawTable4
select *
into FinalTable
from Temp1 join Temp2
虽然等效,但第二个(非嵌套)查询的运行速度比第一个(嵌套)查询快几个数量级。在我的开发服务器和客户端服务器上都是如此。为什么?
最佳答案
数据库引擎在执行时将子查询保存在必要的内存中,因为它们是虚拟的而不是物理的,优化器无法选择最佳路径,或者至少在计划中排序之前不能。这也意味着优化器将对每个操作进行多次全表扫描,而不是对临时表进行可能的索引查找。
将每个子查询视为一个杂耍球。您为数据库引擎提供的子查询越多,它同时处理的事情就越多。如果您使用临时表在成批代码中对此进行简化,优化器会找到一条清晰的路线,在大多数情况下也与索引无关,至少对于更新版本的 SQL Server 而言。
关于sql - 为什么嵌套的 select 语句比临时表需要更长的时间来处理?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26661807/
所以我的问题是: 为什么(以及如何避免)C# 中的 Is 运算符的生命周期比 if 中使用的更长? 例子: Animal a = new Cat(); if (a is Cat c) { Co
我遇到了这个问题,我已经尝试解决了很长一段时间。理想情况下,我希望 particles.js 的“生成框”向下延伸到页面底部(由 fullpage.js 计算的 7 x viewport),这样当使用
我想让一个 div(我的侧边栏)延伸到页面底部。我知道我需要添加“高度:100%;”为了做到这一点。 但是当我添加 height: 100%; 时,内容少于侧边栏的页面会降低侧边栏的高度,然后您就看不
只有我这么认为吗,还是在 SQL Server 2008 Management Studio 中扩展数据库列表比在 SQL Server 2005 Management Studio 中扩展数据库列表
我是一名优秀的程序员,十分优秀!