在查询时经常使用like作为关键字进行模糊查询,在生产环境中由于数据量较大,使用like查询时比较慢,尝试了一些方法,最终发现使用oracle的instr函数可以显著提高查询的效率.
关于数据量:
--1178044
sql语句查询时间比较:
SELECT count(id)
from (select t.id
FROM T_VENDOR_REPOSITORY t
WHERE t.deleted = 0
and t.partnerid in (select distinct (tpr.partnerid)
from t_partner_role tpr
where tpr.partnerroletype in (1)
and tpr.deleted = 0)
and instr(t.VENDORNAME,'拓维信息系统股份有限公司',1,1)!=0);
--使用instr查询耗时 0.654ms
通过真实数据的比较发现使用instr的查询效率要高于like,以后再优化like查询时可以考虑.