Impossible WHERE noticed after reading const tables

一 背景

今天某个用户报名活动被拒绝了,然后我这边需要分析下原因,sql查询的时候给了个这个提示

explain select * from test_user_mobile where uid = 1401912121

 'Extra' => 'Impossible WHERE noticed after reading const tables'

然而uid 是test_user_mobile表的主键

二 分析

  • 主键查询或者唯一性索引查询,如果这条数据没有的话,它会全表扫描,然后得出一个结论,该数据不在表中
  • 如果数据在表中,会走索引
    EXPLAIN SELECT * FROM `test_user_mobile` WHERE uid = 4

  •  所以从侧面也反映了,我查询的1401912121 用户是不存在

  • 如果要强行走索引,可以通过
    select * from test_user_mobile where uid >= 1401912121 and uid <= 1401912121

  • 经过测试,非uniq/pre_id ,仅仅是index:走索引,其中查询的index为varchar的情况下,请➕'';如果不➕''是不走索引的!!

    explain SELECT * FROM `test_user_mobile` WHERE mobile = 1212


     explain SELECT * FROM `test_user_mobile` WHERE mobile = '1212'


     

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值