null 許容ブール値である約 20 個のプロパティを持つオブジェクト (たまたま C#) があります。おそらく数百万のそのようなオブジェクトが SQL データベースに永続化されるでしょう (現在は SQL Server 2008 R2 ですが、MySQL は将来サポートされる必要があるかもしれません)。インスタンス自体は、約 1 段落のテキストとその他の無関係なプロパティを含むため、比較的大きくなります。
特定のオブジェクト インスタンスでは、ほとんどの場合、ほとんどのプロパティがnullになります。
ユーザーがそのようなオブジェクトのインスタンスを検索する場合、おそらく 1 ~ 3 個の null 許容ブール プロパティを選択し、それらの 1 ~ 3 個のプロパティの少なくとも 1 つが非 null であるインスタンスを検索します (OR 検索)。
私が最初に考えたのは、null 可能なブール値プロパティを表す null 可能な BIT 列を持つ単一のテーブルにオブジェクトを永続化することです。ただし、この戦略では、検索時にテーブル スキャンを実行しないように、BIT 列ごとに 1 つのインデックスが必要です。さらに、インデックスごとに可能な値が 3 つしかないため、各インデックスは特に選択的ではありません。
この問題にアプローチするより良い方法はありますか?