共有两张表t1,t2 t1的表结构
t2的表结构
t1和t2通过 insert into t1 values ('www','aaa','bbb'); insert into t1 values ('www1','aaa1','bbb1'); insert into t1 values ('www2','aaa2','bbb2'); insert into t1 values ('www3','aaa3','bbb3'); t2同理构建 insert into t1 select * from t1; insert into t2 select * from t2; 构建数据共: t1共262144行 t2共524288行 为保证查询测试准确(不受缓存结果的影响) 在执行下一次查询前都会执行以下语句 ALTER SYSTEM FLUSH SHARED_POOL (清空语句,执行计划缓存) ALTER SYSTEM FLUSH BUFFER_CACHE (清空数据缓存) select t1.a1,t2.a1 from t1,t2 where t1.a3=t2.a3 and t2.a1='www'; select t1.a1,t2.a1 from t1 join t2 using(a3) where t2.a1='www'; 我们先用 select t1.a1,t2.a1 from t1,t2 where t1.a3=t2.a3 and t2.a1='www'; 测试 explain plan for select t1.a1,t2.a1 from t1,t2 where t1.a3=t2.a3 and t2.a1='www'; SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY); 1、不建任何索引
t1,t2都是全表扫描 2、在t2.a1建索
看查询结果
t1全表扫描,t2范围索引扫描 3、在t2.a1和t1.a3建非唯一索引
4、在t2.a1,t2.a3和t1.a3建非唯一索引
5,在t1.a1,t1.a3建立组合索引,在t2.a3建非唯一索引 select t1.a1,t2.a1 from t1,t2 where t1.a3=t2.a3 and t2.a1='www';
6、在t1,t2的a1和t3列建立组合索引
根据索引的类型与where限制条件的不同,有4种类型的索引扫描: 索引唯一扫描(index unique scan) 索引范围扫描(index range scan) 索引全扫描(index full scan) 索引快速扫描(index fast full scan)
后续逐步完善测试结果!
|