テキスト検索に関連して速度が低下しているため、クエリをより高速に実行する方法を見つけるために、Ingres Vectorwise データベースをテストしています。
char() 列に基づいて約 5000 項目を検索する場合、以下の実装 #1 は非常に高速です。残念ながら、50 項目を検索するのに、5000 項目を検索するのとほぼ同じ時間がかかります。
一方、実装 #2 は 50 アイテムに対しては非常に高速ですが、5000 アイテムに対してはまったくスケーリングしません。
実装 #3 は明らかに #1 よりも悪くなりますが、私が試したことの例を提供しただけです。
私の質問は次のとおりです。私のテーブルには q = bigint、r = char() フィールドの 2 つの列しかないと仮定すると、基本的な SQL を使用してこのクエリを記述し、より多くの選択肢を選択できるようにする他の方法を考えてもらえますか? 50 と 5000 (データベースで期待されるようにスケーリングするもの) で合理的に機能するオプションがあることを願っています。
同じ機能を実行する代替クエリを使用して、すべての回答を受け入れることに注意してください。多ければ多いほど良いです。私が望んでいる方法でスケールすることは期待していませんが、もっと試してみるまでわかりません.
実装 #1:
select q
from test_table
where r in ('a', 'b', 'c', 'd', 'e')
実装 #2:
select q
from test_table
where r = 'a' or r = 'b' or r = 'c' or r ='d' or r = 'e'
実装 #3:
select q
from test_table a
where exists (
select r
from testtable
where r in ('a', 'b', 'c', 'd', 'e')
and a.r = r)