关于Oracle的疑问
- 索引范围扫描(index range scan)
select empno,ename from emp where empno > 1 order by empno
这种情况下不会使用索引范围扫描?
可能的答案:Oracle优化器会自动选择较优的方式去执行查询,对于数据量较大、查询数据相对较少时,会使用范围索引。
- 索引唯一扫描(index unique scan)
当数据类型不一致时,不会进行索引唯一扫描,但是实际仍然唯一索引。
select empno,ename from emp where empno='10'
当数据类型不一致时,Oracle会做隐式转换to_number,如果转换的是字段就不会走索引,如果转换的是条件,就会走索引了,因此对于number隐式转换varchar2的情况,仍然会走索引。如果字段a定义类型为varchar2,where中直接写 a=255,这样就不会走索引,要走索引需用单引号。
3、