为什么这个查询导致TABLE ACCESS FULL not FULL INDEX SCAN?

时间:2018-05-21 19:04:13

标签: sql oracle database-performance create-table

tuple.__itemsize__

分析索引indexTest_INX验证结构;

从indextest中选择col2,col3;

enter image description here

1 个答案:

答案 0 :(得分:2)

原因很简单。列定义为NULLable,因此查询优化器不能使用覆盖索引。要获得 INDEX FULL SCAN ,您可以使用:

create index indexTest_INX on indexTest(col2,col3,0);
                              -- at least one NOT NULL column or literal

或将表格列更改为NOT NULL

<强> DBFiddle Demo

输出:

select col2,col3 from indextest;

---------------------------------------------------
| Id  | Operation        | Name          | E-Rows |
---------------------------------------------------
|   0 | SELECT STATEMENT |               |        |
|   1 |  INDEX FULL SCAN | INDEXTEST_INX |      1 |
---------------------------------------------------