幅約 50 列、長さ 7000 行のテーブルを非常に高速に検索できるスクリーナーを構築しています。
各行は、次の列で構成されます。
primary_key、数量 1、数量 2、数量 3...数量 50。
すべての数量は、基本的に浮動小数点数または整数です。したがって、典型的なスクリーナーは次のようになります。
Get all rows which have quantity1 > x and quantity2 < y and quantity3 >= z.
すべての列にインデックスを付けると、検索時間が非常に速くなりますが、一部の列はリアルタイムで更新されます。すべてにインデックスを付けると、明らかに挿入/更新時間が非常に短くなります。
ただし、列の一部はかなり静的です。したがって、データを 2 つのテーブルに分離するというアイデアがありました。1 つは静的なすべての列を含み、もう 1 つは動的なデータを含みます。次に、実際のクエリに基づいて、両方のテーブルに任意のスクリーナーが適用されます。そして、結果は最終的に組み合わされました。
私は現在、MySQL エンジンを使用することを計画しています。おそらく INNoDB です。しかし、私はもっと速い応答時間を求めています。あるサイトでの同じ問題の実装は非常にきびきびしていました。クエリのサイズに関係なく、500 ミリ秒以内に結果が得られました。この機能を実装するために他にどのようなオプションが利用できるのか疑問に思っています。