索引使用问题 CREATE TABLE TEST( A VARCHAR2(18 BYTE), B VARCHAR2(18 BYTE) )
CREATE UNIQUE INDEX PK_TEST ON TEST (A,B);
ALTER TABLE TEST ADD ( CONSTRAINT PK_TEST PRIMARY KEY (A, B); 每次插入数据a列值都是相同的,数据很大,当前系统的优化是all_rows
delete test where a='aaa' 执行计划是全表扫描
delete /*+rule*/test where a='aaa' 执行计划 是 利用了a 这个非唯一性范围索引 请问为什么上面基于开销的优化方式没有利用索引
------解决方案-------------------- 因为“每次插入数据a列值都是相同的”,然后“delete test where a='aaa' ”实际上等同于delete全表了,这时如是CBO,这时当然只做一次全表扫描最快。 如果用上了索引,那先要扫描索引,再根据rowid去定位一行,这样反而开销大了。
------解决方案--------------------