用户表里常用到SELECT id,status FROM eoc_user where id=:id AND status=1 limit 1这样的查询。id=1 AND status=1 这样的应该建立组合索引么
id
status
组合索引建立完成使用的时候,一定按照建立索引的顺序使用,否则所以不起作用。
要看数据量大小
根据数据分布情景来决定是否来建立索引,id为主键一般不建议和其他字段建立组合索引
从实际场景出发 , 结合数据量 , 然后充分利用explain多做几次执行计划 , 才会有谱 .如果也就个几千几万的量 , 不加看起来也没什么问题 .除此之外 , 就是你这个status的状态值有几种 , 假如只有0和1两种 , 索引的效果或许( 我是说或许 )不会有那么好 , 多说无意 , 自己做点儿数据跑跑测试吧 .
如果数据量大的话可以这么建索引,少的话没必要。建议你看下mysql索引原理:https://tech.meituan.com/mysq...
首先要看数据量大小
如果id已经是主键,就不需要和status做组合索引了。
首先,这里的 id 应该是主键吧?然后是否适合可以考虑几个问题:
int
一般来看,这种情况是没必要建 组合索引 的,因为 索引 维护也是有成本的,会降低插入的效率。而且如果 id 本身为主键唯一,查询的速度就已经很快了。
组合索引
索引
一般习惯上id都是主键吧,主键就相当于唯一索引。对于你上面的情况,如果id字段有索引,那就不用再增加一个id+status的组合索引了
是的,这样建组合索引很适合,但是如果表数据不多的话,就不太有必要,很可能还没有全表扫描的快。