我需要添加索引到我的表(列)和偶然发现这篇文章:
引用:
“说了,你可以清楚地添加很多无意义的索引到一个表,不会做任何事情。将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“子句中有效地查找记录,并且值的基数/选择性非常低?