V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
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
wudaye
V2EX  ›  MySQL

mysql 的 if 函数条件能走索引吗

  •  
  •   wudaye · 2020-07-15 12:41:39 +08:00 via Android · 3131 次点击
    这是一个创建于 1617 天前的主题,其中的信息可能已经有所发展或是发生改变。

    有个统计需求,大概是 select count(if(条件 a)) as acount,count(if(条件 b)) as bcount,担心 if 里面的字段比较能不能走索引(MySQL 文档没说),如果不能,就考虑拆成两个 SQL 并用 where 取代原来的 if 条件。

    4 条回复    2020-07-16 07:50:00 +08:00
    w516322644
        1
    w516322644  
       2020-07-15 12:55:39 +08:00
    主要看 where 。
    zhangysh1995
        2
    zhangysh1995  
       2020-07-15 13:02:12 +08:00
    IF 函数的话,不论是否满足都要执行表达式,所以这里索引没什么用,所有数据都要扫一遍的吧
    为啥不放到 where 里面用索引呢?看起来就是数一下行数。
    cubecube
        3
    cubecube  
       2020-07-15 16:52:21 +08:00
    不会,这个在列表达式,和索引没任何关系
    realpg
        4
    realpg  
       2020-07-16 07:50:00 +08:00 via Android
    为什么这么多人都喜欢或者说优先考虑奇形怪状的查询?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   4155 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 01:00 · PVG 09:00 · LAX 17:00 · JFK 20:00
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.