私の tinyint フィールドには 6 つの可能なオプションがあり、ユーザーは検索ごとに受け入れ可能なオプションを選択します。現在、各オプションを単純に 0 ~ 6 の値として保存し、受け入れ可能なオプションごとに WHERE で個別の句を実行しています。例 (ユーザーが選択したオプション 0、3、および 4):
SELECT * FROM table WHERE type = 0 OR type = 3 OR type = 4
データを 1、2、4、8、16、および 32 として格納した場合に高速になるかどうかを知りたくて、ビットごとの検索を実行しました。
SELECT * FROM table WHERE type & 25
最初のオプションは通常、インデックスを作成して高速化できると思いますが、このテーブルは実際には 43 のフィールドであり、そのうち 33 はさまざまな操作を含めて検索可能です。(多くの場合、クエリは終了するまでに多くの AND を持っています。) 多くのフィールドにインデックスを付ける必要があるだけでなく、インデックスを作成する利点が無効になるのではないでしょうか?