INDEX布尔字段有多必要

时间:2014-11-06 23:37:23

标签: mysql

我有以下专栏:

is_owned_by_admin TINYINT(1) NOT NULL DEFAULT 0;

如果我经常查询这个字段,我是否需要为它添加一个INDEX,或者布尔字段是否与索引的布尔字段一样“快”?有什么区别?

2 个答案:

答案 0 :(得分:2)

问题中的信息不足以给出明确的答案。

最一般的答案:通过在一个布尔列上添加索引,没有任何好处。

那是因为只有两个值,如果这些值均匀分布,索引就不会提高性能。只有在您始终查找具有最不频繁出现的值的行(例如,少于5%或10%的行)时,该索引才有用。在这种特殊情况下,它可能会提高性能。

我强烈怀疑这不是查询中唯一的谓词。可能在其他列上还有其他谓词。并将该布尔列包含在您的查询将使用的另一个索引中的额外列中,这可能实际上有一些好处。

创建和维护索引(它不是免费的)有一些开销,因此必须权衡索引的好处。在现有索引中添加额外的列会更便宜。


最合适的索引将取决于您要查询的表以及您正在执行的实际SQL语句。

答案 1 :(得分:0)

如果没有详细说明,答案是你应该只考虑索引它,如果你经常搜索其中一个布尔值并且该值相对较少。

即:如果总页数中的极少数是" is_owned_by_admin = 1"并且您正在进行的搜索往往希望找到大量的搜索,然后您可能会考虑编制索引。但即使在这种情况下,索引的开销可能也不值得。