优化like语句

模糊查询,比较喜欢使用like的,但是like很可能让你的索引失效。

1、反例

select * from citys where name like '%王' (不使用索引)
select * from citys where name like '%王%' (不使用索引)
3、正例

select * from citys where name like '王%' (使用索引) 。
3、理由

首先尽量避免模糊查询,如果必须使用,不采用全模糊查询,也应尽量采用右模糊查询, 即like ‘…%’,是会使用索引的;
左模糊like ‘%...’无法直接使用索引,但可以利用reverse + function index的形式,变化成 like ‘…%’;
全模糊查询是无法优化的,一定要使用的话建议使用搜索引擎。
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
根据引用\[2\]中的描述,问题出现在执行计划中的第6行IndexRangeScan_30中,like算子做范围查询的范围选择了\["dir", "dis"\],而实际上应该选择\["dir_abc4999/", "dir_abc49990"\]。这导致了查询的行数达到了2亿+条,从而导致了查询速度变慢。 针对这个问题,可以考虑对sql语句进行优化。根据引用\[3\]中的描述,可以使用POSITION函数来替代LIKE操作符,以提高查询性能。具体的优化步骤如下: 1. 将原来的LIKE操作符替换为POSITION函数,例如将name >= 'dir'替换为POSITION('dir' IN name) > 0。 2. 将原来的name < 'dis'替换为POSITION('dis' IN name) = 0。 3. 将原来的查询条件改为使用POSITION函数,例如将WHERE bucket_id = '.bucket.meta.cmu-bucket01' and name >= 'dir' and name < 'dis'改为WHERE bucket_id = '.bucket.meta.cmu-bucket01' and POSITION('dir' IN name) > 0 and POSITION('dis' IN name) = 0。 通过使用POSITION函数,可以更精确地指定范围查询的条件,避免了引用\[2\]中描述的问题,从而提高了查询性能。 #### 引用[.reference_title] - *1* *2* [一条 like 条件的慢 SQL 语句优化](https://blog.csdn.net/TiDBer/article/details/126523367)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [mysql中Mysql模糊查询like效率,以及更高效的写法和sql优化方法](https://blog.csdn.net/forest_fire/article/details/119209671)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

火爆的后槽牙儿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值