今天遇到个Oracle数据库查询没有按期望走索引的情况,整理后,发现有三种方式可以解决掉:
如果有多个索引,未按期走其中期望索引时(两种解决方法)
让期望索引生效
select /*+index(m IDX1_CAF_MENU)*/*
from t_caf_menu m
where m.module_id = '123';
让错误索引失效
select *
from t_caf_menu
where module_code || '' = '123';
当单一索引,或因系统异常时,执行未走索引,联系DBA进行直方图统计信息即可