提升模糊查询效率方案

1、多字段like模糊查询优化:
最常见的写法:where a like ‘%xx%’ or b like ‘%xx%’ or c like ‘%xx%’; 这种写法查询效率低,经过调查,下面的方法可以替代,并且效率高:
1、如果like的关键字相同:
where instr(nvl(a, ‘’)||nvl(b,’’)||nvl(c,’’), ‘xx’) > 0
把要模糊查询的字段先拼接起来,拼接时需要把null转成‘’,否则只要有一个字段值是空,整个拼接的字符串都成空了, 然后用instr 函数去过滤;
2、如果like的关键字不同:
where instr(a, ‘xx’) > 0 or instr(b, ‘yy’) > 0 or instr(c, ‘zz’) > 0
经过测试,这两种方法都比like效率要高;
3,
SELECT * FROM [KLims].[dbo].[Task] where isnull(ClientCompany,’’) + isnull([Address],’’) like '%a%'这样既可正常执行,又高效
4,SELECT card_id,card_number FROM card WHERE LOCATE(‘08f5-11e9’, card_number)>0

select count(*) from H_TENANT_W_2 where WINDOW_ID like ‘%HWG00020SESSIONKEY_WINDOWID%’

用时: 0.203秒
select count(*) from H_TENANT_W_2 where instr(WINDOW_ID ,‘HWG00020SESSIONKEY_WINDOWID’)>0

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
对于 Redis 的模糊查询,确实存在一些性能方面的考虑。由于 Redis 是基于键值对存储的内存数据库,它的主要优势在于快速的读写操作和高效的缓存能力。然而,Redis 并不支持像 SQL 数据库那样的复杂查询语法。 在 Redis 中进行模糊查询一般使用通配符或正则表达式来匹配键名,例如使用 KEYS 命令或 SCAN 命令。但是这些模糊查询操作需要遍历整个数据库来查找匹配的键名,当数据量较大时,查询效率会受到影响。 为了提高模糊查询效率,可以考虑以下几点: 1. 使用更具体的键名:尽量避免在键名中使用通配符,而是根据实际需求设计更具体的键名结构,以减少遍历的范围。 2. 使用合适的数据结构:根据实际需求选择适合的数据结构。例如,使用有序集合(Sorted Set)来存储需要模糊查询的数据,并利用有序集合的范围查询功能来提高查询效率。 3. 使用索引或缓存:如果模糊查询的需求较频繁且对实时性要求不高,可以考虑使用搜索引擎或缓存技术来加速查询。 4. 数据分片:如果数据量非常大,可以考虑将数据分片存储在多个 Redis 节点上,通过数据分片来提高查询的并发性和性能。 需要注意的是,Redis 的主要设计目标是高效的读写操作和缓存能力,而非复杂查询。如果需要进行复杂的查询操作,可能需要考虑其他数据库或搜索引擎的方案

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值