› MySQL 5.5 Community Server
› MySQL 5.6 Community Server
› Percona Configuration Wizard
› XtraBackup 搭建主从复制
Great Sites on MySQL
› Percona
› MySQL Performance Blog
› Severalnines
推荐管理工具
› Sequel Pro
› phpMyAdmin
推荐书目
› MySQL Cookbook
MySQL 相关项目
› MariaDB
› Drizzle
参考文档
› http://mysql-python.sourceforge.net/MySQLdb.html
pennai
V2EX  ›  MySQL

请教一个 sql 查询效率问题

  •  
  •   pennai · Mar 23, 2022 · 3149 views
    This topic created in 1655 days ago, the information mentioned may be changed or developed.
    如果对某加了 unique 索引的字段、或者主键字段查询,暂定字段名为 fieldA ,数据类型为数字,不回表的情况下,
    where fieldA in (1)
    和
    where fieldA = 1 ,
    两种查询效率上是否会有区别?
    11 replies  •  2022-03-24 16:35:25 +08:00
    byx
        1
    byx  
       Mar 23, 2022
    没区别,可以 EXPLAIN 看一下
    Red998
        2
    Red998  
       Mar 23, 2022
    推荐 where filedA =1 limit 1
    hidemyself
        3
    hidemyself  
       Mar 23, 2022
    没区别
    pennai
        4
    pennai  
    OP
       Mar 23, 2022
    @redorblacck886 学到了
    pennai
        5
    pennai  
    OP
       Mar 23, 2022
    @byx 感谢,explain 发现确实执行计划是一样的,即使不是 unique key 也是
    xuanbg
        6
    xuanbg  
       Mar 23, 2022
    unique 不过是数据 100%分散,索引的效能最大而已。扯到这个,就不得不提一个极端的例子:一个 bit 类型的字段,要不要建索引?
    我认为要看情况,如果 0/1 分布是均匀的,建索引就 P 用没有。如果这是个状态字段,所有的 0 都会变成 1 ,而且经常要查询值为 0 的数据,那索引的效能还是相当大的,非常值得建立索引。
    pennai
        7
    pennai  
    OP
       Mar 23, 2022
    @xuanbg 索引倒也不是只有查询用,Oracle 也有位图索引,正是你说的一个 bit 类型的索引,运算上性能很好
    zmal
        8
    zmal  
       Mar 24, 2022
    myql 有个配置是 in 里多少个值不走索引。比较多的话会全表扫描。
    pennai
        9
    pennai  
    OP
       Mar 24, 2022
    @zmal 谢谢,我去学习一个
    Pythoner666666
        10
    Pythoner666666  
       Mar 24, 2022
    @redorblacck886 主键 或者 unique 不需要加 limit = 1 吧
    mikejson
        11
    mikejson  
       Mar 24, 2022
    @Pythoner666666 有道理
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   849 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 32ms · UTC 23:00 · PVG 07:00 · LAX 16:00 · JFK 19:00
    ♥ Do have faith in what you're doing.