MySQL テーブルに BIT 型のフィールドがあります。たとえば、ビット値を使用してレコードのステータスを保存します。
1 = status1
2 = status2
4 = status3
8 = status4
各レコードは、一度に多くのステータスを持つことができます。status1 と status3 の場合、値は 1 + 4 = 5 になります。次を使用して、status3 のすべてのレコードのテーブルをクエリできます。
SELECT *
FROM `table`
WHERE `statuses` & 4
にインデックスがありますが、インデックスが使用されていないことstatuses
がわかります。EXPLAIN
このような状況でインデックスを使用できますか?
PS別の多対多リンクテーブルを使用することは、より正規化されたソリューションですが、これにはより「フラット」な構造が必要です。