索引MySQL:假设有一张表存了全国人民所有人的信息,你觉得性别这一列加索引好,还是出生年月这一列加索引好?
- 需要考虑字段的基数(即字段中不同值的数量)和查询的选择性(即通过索引过滤掉无关数据的能力)。
- 性别字段: 通常只有 "男" 和 "女" 两种取值,基数非常低。由于值的重复率高,索引的选择性差,使用索引的效果有限,甚至可能导致查询优化器不使用索引。
- 出生年月字段: 理论上可以有较多不同的取值,基数相对较高。查询特定日期范围内的人口时,索引可以有效地过滤数据,提高查询效率。
因此,在这两者之间,为出生年月字段建立索引更为合理,因为它具有更高的基数和选择性,能更有效地提高查询性能。
此外,数据库的查询优化器会根据统计信息决定是否使用索引。在性别字段上建立索引可能不会被优化器采用,甚至可能增加维护索引的开销
- 如果有一个字段是status值为0或者1,适合建索引吗
不适合,区分度低的字段不适合建立索引。

浙公网安备 33010602011771号