美文网首页
不走索引查询的几种SQL语句

不走索引查询的几种SQL语句

作者: 走过分叉路 | 来源:发表于2021-07-02 10:32 被阅读0次
    
    # like 模糊查询 前模糊或者 全模糊不走索引
    explain select * from users u where u.name like '%mysql测试' 
     
    # or 条件不走索引,只要有一个条件字段没有添加索引,都不走,如果条件都添加的索引,也不一定,测试
    的时候发现有时候走,有时候不走,可能数据库做了处理,具体需要先测试一下
    explain select * from users u where u.name = 'mysql测试' or u.password ='JspStudy'
     
    # or 条件都是同一个索引字段,走索引
    explain  select * from users u where u.name= 'mysql测试' or u.name='333'
     
    # 使用 union all 代替 or 这样的话有索引例的就会走索引
    explain
    select * from users u where u.name = 'mysql测试' 
    union all
    select * from users u where u.password = 'JspStudy'
     
    # in 走索引
    explain select * from users u where u.name in ('mysql测试','JspStudy')
     
    # not in 不走索引
    explain select * from users u where u.name not in ('mysql测试','JspStudy')
     
    # is null 走索引
    explain select * from users u where u.name is null 
     
    # is not null  不走索引
    explain select * from users u where u.name is not null 
     
    # !=、<> 不走索引
    explain select * from users u where u.name <> 'mysql测试'
     
    # 隐式转换-不走索引(name 字段为 string类型,这里123为数值类型,进行了类型转换,所以不走索引,改为 '123' 则走索引)
    explain select * from users u where u.name = 123
     
    # 函数运算-不走索引
    explain select *  from users u where  date_format(upTime,'%Y-%m-%d') = '2019-07-01'
    # and 语句,多条件字段,最多只能用到一个索引,如果需要,可以建组合索引
    explain select * from users where id='4' and username ='JspStudy' 
    ————————————————
    版权声明:本文为CSDN博主「Muscleheng」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/Muscleheng/article/details/94393024
    

    相关文章

      网友评论

          本文标题:不走索引查询的几种SQL语句

          本文链接:https://www.haomeiwen.com/subject/moeeultx.html