我需要为我的表(列)添加索引,无意中发现了以下帖子:
How many database indexes is too many?
引述:
如果只有两个不同的值,索引真的毫无意义吗?给出如下表(MySQL数据库,InnoDB)
Id (BIGINT)
fullname (VARCHAR)
address (VARCHAR)
status (VARCHAR)
其他条件:
- 该数据库包含3亿条记录
- 状态只能是"启用"和"禁用"
- 1.5亿条记录的状态=已启用,1.5亿条记录的状态为
我的理解是,如果没有状态索引,一个where status=’enabled’
的select将导致一个完整的表扫描,需要处理3亿条记录?
当我对状态使用BTREE索引时,查找的效率有多高?
我该不该给这个专栏编索引?
MySQL InnoDB提供了哪些替代方法(可能是任何其他索引),可以通过给定示例中的"where status="enabled"子句高效地查找记录,并且值的基数/ Select 性非常低?