LIKE查询优化之CHARINDEX(sqlserver中函数)和INSTR(oracle中函数)

本文通过实验对比了在SQL Server中使用LIKE与CHARINDEX进行模糊查询的性能差异,并给出了具体的数据对比结果。实验显示,在一定数据量下,CHARINDEX查询速度优于LIKE。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一般我们模糊查询是用like
  select * from 表 where 列 like '';
  但是在数据量很大的时候用like查询会显得很慢。

在sqlserver中

使用charindex函数会不会使查询变得快些呢?我们来试一试
  select * from 表 where CHARINDEX('',列)>0;

oracle中

select * from 表 where INSTR(列,'')>0;
  下面我们在sqlserver中实验一下:

1、写个存储过程插入100万条相同数据:

CREATE PROCEDURE insert10000Demo1
    @a int, 
    @b int 
AS
    set @a = 1;
    set @b = 0;
    while @a<=1000000
BEGIN
    set @b += @a;
    set @a +=1;
    insert into txtDemo(id,txt) values(@a,'内容随意');
END

2、执行以下存储过程:

exec insert10000Demo1 1,0;

3、查询10万条数据对比

(1)like:

select top 100000 * from txtDemo where txt like '%内容随意%';

所需时间8秒

(2)CHARINDEX:

select top 100000 * from txtDemo where CHARINDEX('内容随意',txt)>0;

所需时间5秒

4、查询20万条数据对比

(1)like:

select top 200000 * from txtDemo where txt like '%内容随意%';

所需时间12秒

(2)CHARINDEX:

select top 200000 * from txtDemo where CHARINDEX('内容随意',txt)>0;

所需时间12秒

5、查询30万条数据对比

(1)like:

select top 300000 * from txtDemo where txt like '%内容随意%';

所需时间18秒

(2)CHARINDEX:

select top 300000 * from txtDemo where CHARINDEX('内容随意',txt)>0;

所需时间17秒

 

 

总结:

爱用哪个用哪个/笑脸。可能是在某个数据量的时候是相等的。在这个数据之前是like慢些,在这个数据之后是like快些。

测评结束。

注意:在大批量插数据时要把使索引失效,插入完后再使索引有效。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值