mysql选择性低的列怎么加索引_MySQL:低基数/选择性列=如何索引?

我需要添加索引到我的表(列)和偶然发现这篇文章:

引用:

“说了,你可以清楚地添加很多无意义的索引到一个表,不会做任何事情。将B树索引添加到具有2个不同值的列中将是无意义的,因为它不会在查找数据方面添加任何内容。列中的值越唯一,它将从索引中获益越多。

如果只有两个不同的值,一个索引是否真的毫无意义?给出一个表如下(MySQL数据库,InnoDB)

Id (BIGINT)

fullname (VARCHAR)

address (VARCHAR)

status (VARCHAR)

其他条件:

>数据库包含3亿条记录

>状态只能“启用”和“禁用”

> 150百万条记录具有状态=启用和1.5亿条记录

stauts =禁用

我的理解是,没有状态索引,一个选择,其中状态=’启用’将导致一个完整的tablecan与300百万记录处理?

当我使用BTREE索引状态时,查找的效率如何?

我应该索引这个列吗?

MySQL InnoDB提供了哪些备选方案(可能是任何其他索引),以便在给定示例中的“where status =”enabled“子句中有效地查找记录,并且值的基数/选择性非常低?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值