art*_*olk 4 mysql sql bitwise-operators
我的 MySQL 表中有一个 BIT 类型的字段。我想使用位值存储记录的状态,例如:
1 = status1
2 = status2
4 = status3
8 = status4
Run Code Online (Sandbox Code Playgroud)
每个记录可以同时具有多个状态。对于状态 1 和状态 3,该值将是 1 + 4 = 5。我可以使用以下方法查询表中所有状态为 3 的记录:
SELECT *
FROM `table`
WHERE `statuses` & 4
Run Code Online (Sandbox Code Playgroud)
我有索引statuses,但是EXPLAIN告诉我没有使用索引。在这种情况下我可以使用索引吗?
PS 使用单独的多对多链接表是更规范化的解决方案,但我希望为此拥有更“扁平”的结构。
优化器很难在位域上使用索引。考虑设置第 2 位(值“4”)的所有不同值:4, 5, 6, 7, 12, 13, 14, 15, 20, 21, 22, 23, ... 优化器如何提高效率用那个?
| 归档时间: |
|
| 查看次数: |
1988 次 |
| 最近记录: |