我有以下列:
is_owned_by_admin TINYINT(1) NOT NULL DEFAULT 0;
如果我经常查询这个字段,我是否需要向它添加一个索引,或者 bool 字段是否与索引 bool 字段一样“快速”?有什么区别?
最佳答案
问题中的信息不足,无法给出明确的答案。
最一般的答案:仅在一个 bool 列上添加索引没有任何好处。
那是因为只有两个值,如果这些值均匀分布,则索引不会提高性能。该索引仅在您始终查找具有最不常出现的值的行时才有用,例如小于 5% 或 10% 的行。在这种特殊情况下,它可能会提高性能。
我强烈怀疑这不是您查询中的唯一谓词。其他列上可能还有其他谓词。并将该 bool 列作为额外列包含在您的查询将使用的另一个索引中,这实际上可能有一些好处。
创建和维护索引会产生一些开销(它不是免费的),因此必须权衡拥有索引的好处。将额外的列添加到现有索引的成本会低很多。
最合适的索引将取决于您正在查询的表,以及您正在执行的实际 SQL 语句。
关于mysql - INDEX bool 字段有多必要,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26791483/