Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/68.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_Oracle - Fatal编程技术网

Sql 子查询是否保留索引

Sql 子查询是否保留索引,sql,oracle,Sql,Oracle,我想知道Oracle中子查询返回的值是否丢失索引 select * from emp where empid = 1 -- empid is indexed 从中选择t1.*从emp t2 t1中选择t2.*其中t1.empid=1 -t1.empid仍在索引中? 是的,第二个查询使用索引。事实上,两者都编译为完全相同的执行计划。检查一下 您应该记住,SQL处理是惰性的:子查询不一定要完全执行才能将输入数据获取到顶级查询。相反,它们应该被视为可以根据需要调用以获取数据的代码。是的,第二个查询使

我想知道Oracle中子查询返回的值是否丢失索引

select * from emp where empid = 1
-- empid is indexed
从中选择t1.*从emp t2 t1中选择t2.*其中t1.empid=1 -t1.empid仍在索引中?
是的,第二个查询使用索引。事实上,两者都编译为完全相同的执行计划。检查一下


您应该记住,SQL处理是惰性的:子查询不一定要完全执行才能将输入数据获取到顶级查询。相反,它们应该被视为可以根据需要调用以获取数据的代码。

是的,第二个查询使用索引。事实上,两者都编译为完全相同的执行计划。检查一下


您应该记住,SQL处理是惰性的:子查询不一定要完全执行才能将输入数据获取到顶级查询。相反,它们应该被视为可以根据需要调用以获取数据的代码。

查询优化过程的一部分是简化所提供查询的结构。这通常意味着用连接替换IN和EXISTS,将谓词推送到内联视图中,并完全消除子查询

事实上,由于这种行为非常普遍,因此有一些技术是Optimizer提示,例如,公共表表达式,或某些逻辑冗余子句,专门设计用于防止谓词推送和子查询合并以及其他无意中不利的查询转换

默认情况下,您应该期望在逻辑上可能的情况下,子查询和内联视图将合并到父查询中,正如其他人所提到的,在您的示例中几乎肯定会出现这种情况


当然,所有这些都表明,使用子查询或内联视图通常不会削弱优化人员使用索引、查询重写或各种其他性能增强技术的能力。

查询优化过程的一部分是简化所提供查询的结构。这通常意味着用连接替换IN和EXISTS,将谓词推送到内联视图中,并完全消除子查询

事实上,由于这种行为非常普遍,因此有一些技术是Optimizer提示,例如,公共表表达式,或某些逻辑冗余子句,专门设计用于防止谓词推送和子查询合并以及其他无意中不利的查询转换

默认情况下,您应该期望在逻辑上可能的情况下,子查询和内联视图将合并到父查询中,正如其他人所提到的,在您的示例中几乎肯定会出现这种情况


当然,所有这些都表明,使用子查询或内联视图通常不会削弱优化人员使用索引、查询重写或各种其他性能增强技术的能力。

这个问题没有简单的答案:有时是,有时不是。这取决于许多因素。一般来说,只是不深入到理论中,为了安全起见,尽量避免这种类型的查询编写,或者换句话说,在大多数情况下,视图是不好的。更多详情请参阅。

这个问题没有简单的答案:有时是,有时不是。这取决于许多因素。一般来说,只是不深入到理论中,为了安全起见,尽量避免这种类型的查询编写,或者换句话说,在大多数情况下,视图是不好的。有关更多详细信息,请参阅。

不太确定您要询问的内容。如果您正在询问,选择查询将永远不会删除索引@AlexFilipovici我认为更值得注意的是,编辑没有解决这个问题。检查执行计划,你会的know@TheNewIdiot-请将代码格式化为代码,而不是报价。如果将代码格式化为引号,则不会突出显示语法,空格会被折叠。@BurhaKhalid我不确定您将其更改为的标题是否是OP所要求的。不确定您所要求的内容选择查询将永远不会删除索引,如果这是您所要求的@AlexFilipovici我认为更值得注意的是,编辑没有解决这个问题。检查执行计划,你会的know@TheNewIdiot-请将代码格式化为代码,而不是报价。如果将代码格式化为引号,则不会突出显示语法,并且空格会被折叠。@BurhaKhalid我不确定您将其更改为的标题是否是OP要求的标题。