素材牛VIP会员
mysql组合索引创建
 ka***13  分类:PHP代码  人气:1009  回帖:10  发布于6年前 收藏

用户表里常用到SELECT id,status FROM eoc_user where id=:id AND status=1 limit 1这样的查询。
id=1 AND status=1 这样的应该建立组合索引么

 标签:mysqlphp

讨论这个帖子(10)垃圾回帖将一律封号处理……

Lv4 码徒
想***儿 技术总监 6年前#1

组合索引建立完成使用的时候,一定按照建立索引的顺序使用,否则所以不起作用。

Lv7 码师
Sl***rk 软件测试工程师 6年前#2

要看数据量大小

Lv5 码农
38***38 职业无 6年前#3

根据数据分布情景来决定是否来建立索引,id为主键一般不建议和其他字段建立组合索引

Lv3 码奴
wa***88 产品经理 6年前#4

从实际场景出发 , 结合数据量 , 然后充分利用explain多做几次执行计划 , 才会有谱 .
如果也就个几千几万的量 , 不加看起来也没什么问题 .
除此之外 , 就是你这个status的状态值有几种 , 假如只有0和1两种 , 索引的效果或许( 我是说或许 )不会有那么好 , 多说无意 , 自己做点儿数据跑跑测试吧 .

Lv2 入门
请***丶 Linux系统工程师 6年前#5

如果数据量大的话可以这么建索引,少的话没必要。
建议你看下mysql索引原理:https://tech.meituan.com/mysq...

Lv3 码奴
韩***3 学生 6年前#6

首先要看数据量大小

Lv5 码农
Ja***jz 其它 6年前#7

如果id已经是主键,就不需要和status做组合索引了。

Lv5 码农
橙***哒 JAVA开发工程师 6年前#8

首先,这里的 id 应该是主键吧?
然后是否适合可以考虑几个问题:

  1. 这个表的数据量时什么量级?
  2. status 类型是 int 吧? 其值是否为有限可枚举的?
  3. 生产环境中,此处是否是瓶颈?线上库执行很慢么?

一般来看,这种情况是没必要建 组合索引 的,因为 索引 维护也是有成本的,会降低插入的效率。
而且如果 id 本身为主键唯一,查询的速度就已经很快了。

Lv6 码匠
ed***on 移动开发工程师 6年前#9

一般习惯上id都是主键吧,主键就相当于唯一索引。对于你上面的情况,如果id字段有索引,那就不用再增加一个id+status的组合索引了

Lv1 新人
闪***星 UI设计师 6年前#10

是的,这样建组合索引很适合,但是如果表数据不多的话,就不太有必要,很可能还没有全表扫描的快。

 文明上网,理性发言!   😉 阿里云幸运券,戳我领取