在mysql中,如果一个列有两个状态且一个结果很少,我们应该为这个列构建索引吗?
例如,性别栏有男性和女性,女性是少数。如果我们经常搜索女性数据,建立一个性别指数会加快吗?答案 0 :(得分:1)
这个问题没有明确的答案,这取决于多种因素。
一般理论是,不应将具有低基数的列编入索引。在实践中,它不是黑白的。在布尔列上添加索引有时会大大减少SELECT时间。
问题是:
你桌上有很多记录吗?如果是,添加索引将减少INSERT / UPDATE / DELETE次数。
男性和女性之间的重新分配是什么?如果55/45,索引不会有多大帮助。如果80/20使用索引搜索20%的女性会更快。
您如何查询您的男性/女性?如果大部分时间使用其他因素,那么请考虑在您的性别+其他(s)列上添加综合索引
您的唯一方法是测试。创建索引并查看是否有帮助