【发布时间】:2021-07-16 19:23:56
【问题描述】:
我正在运行一些查询,这些查询使用 WHERE 子句中的几个 BIT(1) 字段来更新一些表,除了来自 INT 字段的其他条件(主要是值列表)。但是,在 EXPLAIN 命令中,我看到引擎首先使用 INT 字段而不是 BIT(1) 字段来扫描表。
虽然不依赖 BIT(1) 字段是可以理解的,因为这只会在平均情况下将扫描时间缩短一半,但我知道只有少数行实际上会填充 BIT(1) 结果(如“待处理”与“关闭”,几乎所有行都“关闭”),这样效率会更高。
有没有办法编写查询以使 MySQL 引擎首先使用 BIT(1) 条件? 由于查询中使用了几个 BIT(1),所有这些字段的索引都有效吗?
【问题讨论】:
-
bit 最多可以容纳 64 位,因此不需要多个位 cpöumns,但为了优化需要更多信息,请参阅dba.meta.stackexchange.com/questions/3034/…
标签: mysql performance