Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.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
Performance Oracle-视图是否使用表索引(如果存在)_Performance_Oracle_Query Optimization - Fatal编程技术网

Performance Oracle-视图是否使用表索引(如果存在)

Performance Oracle-视图是否使用表索引(如果存在),performance,oracle,query-optimization,Performance,Oracle,Query Optimization,我是一个SQL专家,但我在甲骨文公司工作过一段时间。扩展自己的边界没什么错 有人给了我一张桌子。我确实有权从该视图中删除 Delete from vwGregsViewOnTable where SEQ = 12345 这需要12分钟。桌子上大约有2000万行,但是12分钟? 我找了一位DBA,他们确认我正在做表格扫描 我们编写了表格的脚本,下面是部分 CREATE TABLE SYT_SYALERTQUEUE ( IDRECMAIN VARCHAR2(32 BYTE)

我是一个SQL专家,但我在甲骨文公司工作过一段时间。扩展自己的边界没什么错

有人给了我一张桌子。我确实有权从该视图中删除

Delete from vwGregsViewOnTable where SEQ = 12345 
这需要12分钟。桌子上大约有2000万行,但是12分钟? 我找了一位DBA,他们确认我正在做表格扫描

我们编写了表格的脚本,下面是部分

CREATE TABLE SYT_SYALERTQUEUE
(
  IDRECMAIN          VARCHAR2(32 BYTE),
  IDRECPARENT        VARCHAR2(32 BYTE),
  IDREC              VARCHAR2(32 BYTE),
  SEQ                NUMBER(10),
.
.
.


CREATE INDEX SYNDX00000000000000000002277 ON SYT_SYALERTQUEUE
(SEQ)
LOGGING
TABLESPACE WV90NDX
在我被告知应该使用的列上似乎有一个索引

在本例中,vwGregsViewOnTable是SYT_SYALERTQUEUE上的视图


我的问题是——我怎样才能说服ORACLE使用索引。默认情况下,它似乎不想这样做

回答您的问题:您可以强制Oracle的SQL优化器使用特定索引:

SELECT /*+ INDEX (table indexname)*/ col1, col2
  FROM table
  WHERE blabla ;

这里的这个东西称为索引。大多数情况下,使用它并不明智。

视图的定义是什么?视图是否正在执行阻止使用索引的操作?什么是查询计划?优化器的基数估计是否准确?或者一个或多个对象是否缺少/不正确的统计数据?检查执行计划,您就会知道