我有这样一条SQL语句
select * from TABLE_NAME where COLUMN LIKE'%yicha.cn%'
这是一个模糊查询网址的语句,表里面有2000万条数据,这样查询起来太慢然后又改成了这样
select * from TABLE_NAME where instr(COLUMN, 'yicha.cn') >0
这样查询是要快点了,但还是感觉还是慢不能接受我考虑过建过函数索引,但我查询的网址有1500个左右,相当于我是用成的动态SQL查询,每次查询是查询的不同的网址
请教各位有没有什么好方法,提高查询效率?
select * from TABLE_NAME where COLUMN LIKE'%yicha.cn%'
这是一个模糊查询网址的语句,表里面有2000万条数据,这样查询起来太慢然后又改成了这样
select * from TABLE_NAME where instr(COLUMN, 'yicha.cn') >0
这样查询是要快点了,但还是感觉还是慢不能接受我考虑过建过函数索引,但我查询的网址有1500个左右,相当于我是用成的动态SQL查询,每次查询是查询的不同的网址
请教各位有没有什么好方法,提高查询效率?
这样是不走索引,没有其它WHERE条件,就只有模糊查询这个条件
肯定还会有其他的条件 。。
你先用其他的条件把结果查询出来。比如日期。。那样查出来的数据可能就只有几万条。或者更少。
那你再用Like 这样速度会快很多。
因为在用Like的时候数据库是不会走索引。所以你建索引也没有效果。
只能通过这样的办法来解决你的问题
LIKE'%yicha.cn%'不走索引,
LIKE'yicha.cn%' 这个走啊,'%yicha.cn%'='yicha.cn%'+'%yicha.cn',不用我说了吧!
不走索引的。