您的位置:首页 > 数据库

提高sql查询性能-使用instr函数替换like

2015-07-28 21:51 302 查看
在查询时经常使用like作为关键字进行模糊查询,在生产环境中由于数据量较大,使用like查询时比较慢,尝试了一些方法,最终发现使用oracle的instr函数可以显著提高查询的效率.

关于数据量:

SELECT count(1) FROM t_partner_role;

--612565
SELECT count(1) FROM T_VENDOR_REPOSITORY;

--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 t.VENDORNAME like '%拓维信息系统股份有限公司%');

--使用like查询耗时 1.570ms

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查询时可以考虑.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: