开发者社区> 问答> 正文

MYSQL索引性能的问题

有一个表大约 120 万数据。有两个字段 a, b 建立了 INDEX 联合索引。
单独根据 a 字段查询速度还算比较快,但是如果根据 b 字段查询,速度慢的掉渣了...请问怎么才能让:
根据 a 查询
or
根据 b 查询
or
同时根据 a 和 b 查询
这样的查询都能快起来呢?

展开
收起
蛮大人123 2016-02-06 15:27:47 2150 0
1 条回答
写回答
取消 提交回答
  • 我说我不帅他们就打我,还说我虚伪

    在联合索引的情况下,根据最左优先原则,联合索引只对同时查询两个字段或者第一个字段的时候才起作用。
    比如,对(a, b)建立了索引,那么会有下面的结果。
    SELECT * FROM table WHERE a='foo' // 索引有效
    SELECT * FROM table WHERE b='bar' // 索引无效
    SELECT * FROM table WHERE a='foo' and b='bar' // 索引有效
    因此如果要让单独查询 b 的时候,索引也起作用,就得对 b 单独做一个索引。
    按照题主现在的情况,ab联合索引可以不要了,对ab分别做索引即可。

    2019-07-17 18:38:26
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
搭建电商项目架构连接MySQL 立即下载
搭建4层电商项目架构,实战连接MySQL 立即下载
PolarDB MySQL引擎重磅功能及产品能力盛大发布 立即下载

相关镜像