两张表内联,没有使用索引是什么情况??

select m.id,t.`id` 
from  cz_zz_xxxb_view m 
inner join (
    select w.`id` from cc_zz_wt_view w 
    where  INSTR(w.`conten`,'土地') 
)t
on   t.id = m.id

w 是问题表 1w多数据
m 表是关联的 100多w 的数据
on 使用的都是 索引关联

可是最后还会走 ALL 没有使用索引是为什么??

已解决, 是两个表的关联字段,编码不统一导致的

找到两张表的外键关系就可以了

oracle索引是有自动优化的,有子查询的时候,如果走all的效率高,就不会走索引

应该是这句话

 select w.`id` from cc_zz_wt_view w  where  INSTR(w.`conten`,'土地') 

如果在查询语句当中有函数的话,不会用到索引的

应尽量避免在where子句中对字段进行函数操作,这将导致引擎放弃使用索引而进行全表扫描。

首先你确认下

select m.id,t.id
from cz_zz_xxxb_view m
where
t.id = ''测试ID'

是否全表查询(ALL)

如果是的话,就说明跟 inner join的m表没有关系。这个时候需要重新考虑下 t表的PK设计是否合理。

oracle支持函数式索引,可以在w表上建函数式索引应该就比较快了

已解决, 是两个表的关联字段,编码不统一导致的