1、like '%string%' 和 like '%string' 不會使用列上的索引,且效率低,本文替代like主要對此情況進行
2、like 'string%' 和 like 'sting%string' 能夠使用列上的索引
SqlServer數據庫:
使用CHARINDEX函數
例:
替代前:
select tId, tName from tb_Test where tName like'%abc%"
替代后:
select tId, tName from tb_Test where charindex('abc',tName)>0
Oracle數據庫:
使用INSTR函數
例:
替代前:
select tId, tName from tb_Test where tName like'%abc%"
替代后:
select tId, tName from tb_Test where instr(tName,'abc')>0
另:對like '%..'型,Oracle數據庫可采用下述替代方案:
select tId, tName from tb_Test where reverse(tName) like reverse('%abc')