mysql - INDEX bool 字段有多必要

标签 mysql

我有以下列:

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/

相关文章:

mysql - 编写和检查 SQL 的地方

Java Spring - MySQL时间戳字段和毫秒精度

php - 不理解这种 isset 行为

mysql - 为什么此 sql #1066 - 不唯一的表/别名 : 'categories' ?

php - 如何在文本开头查找短语(单词)

javascript - 来自选择表单的 Ajax 请求

php - Android 使用 PHP 连接 MySQL

php - 将 mysql 数组动态填充到下拉菜单中

php - 我在 SQL 中遇到语法错误

MySQL复杂的关系SELECT