这可能是一个非常愚蠢的问题,但为数据库表中的布尔字段编制索引会有很多好处吗?

考虑到一种常见的情况,例如标记为非活动的"软删除"记录,因此大多数查询都包含WHERE deleted = 0条记录,单独索引该字段会有帮助吗,还是应该将其与其他常用搜索字段组合在一个不同的索引中?

推荐答案

您可以对搜索到的字段进行索引,这些字段具有很高的 Select 性/基数.几乎在任何表中,布尔字段的基数都会被删除.如果有什么问题的话,它会让你的书写速度变慢(非常小的一部分).

如果每个查询都考虑了软删除,那么可能会将其作为聚集索引中的第一个字段?

Mysql相关问答推荐

无条件理解MySQL中内连接和交叉连接的相似性

如何在Sequelize中将查询作为选项?

MySQL多连接以获得单个结果集(使用MySQL max函数)

不分组寻呼

多列分组并进行求和

如何将数据导入MySQL中的master/replica struct

当mysql中只有一个索引列时,为什么使用范围条件锁定读取会锁定每条记录?

在 MySQL 中跨日期和位置计算和排序实体的共现

分别针对每个不同的列 Select 聚合

MySQL 8 - MBRContains 不使用空间索引

如果在表中多次发现 a 列中的相同值,则排除所有行

在 MySQL 中为多列创建索引以进行查询优化

按长度过滤 varbinary 字段

SQL 中的双杠 (||) 是什么意思?

Facebook user_id:big_int、int 还是 string?

为什么数据库行元组中的整数具有L后缀?

MySQL Workbench 无法加载 mysql.proc

PHP MySQLI 防止 SQL 注入

应该使用什么列类型将序列化数据存储在 mysql 数据库中?

在 Ubuntu 上安装 mysql gem 的困难