create table indexTest(
col1 NUMBER,
col2 NUMBER,
COL3 NUMBER);
create index indexTest_INX on indexTest(col2,col3);
分析索引indexTest_INX验证结构;
从indextest中选择col2,col3;
最佳答案
原因很简单。列被定义为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 |
---------------------------------------------------
关于sql - 为什么此查询会导致 TABLE ACCESS FULL 而不是 FULL INDEX SCAN?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50455119/