sql的不等于条件优化_SQL优化案例(2):OR条件优化

本文探讨了SQL查询中OR条件优化的重要性,通过三个案例展示了不同场景下的优化策略。包括不同列的OR条件查询、同一列的OR条件优化以及关联SQL中的OR条件处理。通过改写SQL,如使用UNION ALL和CASE WHEN,显著提高了查询性能,降低了索引选择不佳导致的性能隐患。
摘要由CSDN通过智能技术生成

随后上一篇文章《 SQL优化案例(1):隐式转换》的介绍,此处内容围绕OR的优化展开。

在MySQL中,同样的查询条件,如果变换OR在SQL语句中的位置,那么查询的结果也会有差异,在多个复杂的情况下,可能会带来索引选择不佳的性能隐患,为了避免执行效率大幅度下降的问题,我们可以适当考虑使用Union all对查询逻辑复杂的SQL进行分离。

常见OR使用场景,请阅读以下案例。

案例一:不同列使用OR条件查询

1.待优化场景

SELECT....     FROM`t1` a  WHERE a.token= '16149684'         AND a.store_id= '242950'          AND(a.registrationId IS NOT NULL          AND a.registrationId<> '')              OR a.uid= 308475          AND a.registrationId IS NOT NULL          AND a.registrationId<> ''

执行计划

+--------------+-----------------------+-----------------+----------------+-------------------+-------------------+---------------+----------------+---------------------------------------------+ | id           | select_type           | table           | type           | key               | key_len           | ref           | rows           | Extra                                       |+--------------+-----------------------+-----------------+----------------+-------------------+-------------------+---------------+----------------+---------------------------------------------+ | 1            | SIMPLE                | a               | range          |idx_registrationid | 99                |               | 100445         | Using index condition; Using where          |+--------------+-----------------------+-----------------+----------------+-------------------+-------------------+---------------+----------------+-------------------------------
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值