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

Sql 在联接查询中未拾取外键上的索引

Sql 在联接查询中未拾取外键上的索引,sql,oracle10g,Sql,Oracle10g,以EMP为例 在deptno的上下文中查询EMP表是非常常见的。如果你经常 查询: 我在employee表上有一个索引deptNo_idx。但每当我看到执行计划时,这个索引就永远不会被使用。即使给出索引提示也没有用 知道如何使用外键列上的索引吗?当您试图了解优化器行为时,EMP和DEPT表不是特别好的表。它们非常小,优化器通常会正确地确定完整表扫描比索引访问更有效。此外,有相对较少的不同DEPTNO值,因此优化器知道必须从EMP表中获取相对较大百分比的行。由于表中的行很少,并且您需要为任何给定的

以EMP为例 在deptno的上下文中查询EMP表是非常常见的。如果你经常 查询:

我在employee表上有一个索引deptNo_idx。但每当我看到执行计划时,这个索引就永远不会被使用。即使给出索引提示也没有用

知道如何使用外键列上的索引吗?

当您试图了解优化器行为时,EMP和DEPT表不是特别好的表。它们非常小,优化器通常会正确地确定完整表扫描比索引访问更有效。此外,有相对较少的不同DEPTNO值,因此优化器知道必须从EMP表中获取相对较大百分比的行。由于表中的行很少,并且您需要为任何给定的DEPTNO值获取大部分行,因此表扫描将更有效

如果表更大并且有更多的部门,优化器将更有可能确定使用索引会更有效。

当您试图了解优化器行为时,EMP和DEPT表不是特别好的表。它们非常小,优化器通常会正确地确定完整表扫描比索引访问更有效。此外,有相对较少的不同DEPTNO值,因此优化器知道必须从EMP表中获取相对较大百分比的行。由于表中的行很少,并且您需要为任何给定的DEPTNO值获取大部分行,因此表扫描将更有效


如果表更大,部门更多,优化器更有可能确定使用索引会更有效。

A更改语法以使用正确的联接:

select *
from dept
join emp on emp.deptno = dept.deptno
where dept.deptno = :X;
B在dept.deptno上定义一个索引,因为这是where子句的主要过滤器

CREATE INDEX DEPT_DEPTNO_IDX ON DEPT(DEPTNO);

那会让它飞起来的

A更改语法以使用正确的联接:

select *
from dept
join emp on emp.deptno = dept.deptno
where dept.deptno = :X;
B在dept.deptno上定义一个索引,因为这是where子句的主要过滤器

CREATE INDEX DEPT_DEPTNO_IDX ON DEPT(DEPTNO);

那会让它飞起来的

DEPTNO实际上是department表的主键。我猜,如果字段是主键,oracle本身会在该字段上保留一个索引吗?只是澄清一下:答案的A部分与性能问题无关,它纯粹是一个更整洁的编码样式deptno实际上是department表的主键。我猜,如果这个字段是主键,oracle本身会在这个字段上保留一个索引吗?只是想澄清一下:答案的A部分与性能问题无关,它纯粹是一种更简洁的编码样式。实际上,我只是使用这些表来清楚地表达这个问题。实际的表非常大,索引中的性能将effective@Dhirendra-如果使用不同的表时遇到特定问题,请发布表定义、查询计划、查询以及有关数据分布的一些信息。实际上,我只是使用这些表来清楚地表达问题。实际的表非常大,索引中的性能将effective@Dhirendra-如果使用不同的表时遇到特定问题,请发布表定义、查询计划、查询以及有关数据分布的一些信息。