-- explain
select * FROM PNAS_MAT_PLM
force index(PNAS_MAT_PLM_UN)
where MAT_ID in (
select MAT_ID FROM PNAS_MAT_PLM where MAT_ID like '%12832788-00%'
and REMOVE_FLAG =0
)
and REMOVE_FLAG =0
1.如果想要左右like 可以使用
select * FROM PNAS_MAT_PLM
where MAT_ID in (
select MAT_ID FROM PNAS_MAT_PLM where MAT_ID like '%12832788-00%'
)
可以先查询带有唯一key的数据,然后用in操作来查询数据
因为MAT_ID 有唯一索引,可以从索引的数据中先查询数据MAT_ID,而不是直接从整张表直接like查询数据。以达到优化sql的目的。
2.括号外加入了 新的and条件 导致速度变慢
select * FROM PNAS_MAT_PLM
force index(PNAS_MAT_PLM_UN)
where MAT_ID in (
select MAT_ID FROM PNAS_MAT_PLM where MAT_ID like '%12832788-00%'
)
and REMOVE_FLAG =0
因为mysql 处理条件时 会做一些选择先后,可能会导致先走and 后面的条件,这时候可以使用强制索引来优化sql
3.又在括号内加了and 条件然后查询速度又变快了,也没有强制使用索引,理解为括号里面有and 导致了mysql 选择了先查括号里面这个条件
select * FROM PNAS_MAT_PLM
where MAT_ID in (
select MAT_ID FROM PNAS_MAT_PLM where MAT_ID like '%12832788-00%'
and REMOVE_FLAG =0
)
and REMOVE_FLAG =0
标签:MAT,PNAS,学习,索引,PLM,where,ID,select From: https://www.cnblogs.com/orangeJuiceRain/p/17127312.html