次のようなテーブルが1つあります。
テーブル名:
random_number_series
その列は次のとおりです。
number [numeric(10)]
name [varchar(10)]
status [tinyint(1)]
type [tinyint(1)]
createdDate [datetime]
このテーブルには、約2億5000万から3億行があります。
今、私たちの要件は、大量、つまり100万の乱数を生成することです。この生成された数値が上記の表(数値列付き)にあるかどうかを確認したいと思います。
これをどのように行うことができますか?
注意:
->アプリケーションロジックで乱数が生成されます。
->戦略/擬似コードを知りたいのですが、どのように設計すればよいですか?
百万の数字を表に入れてください。次に、テーブルを一緒にJOIN
して、どのテーブルが存在するかを確認します。またはLEFT JOIN ... IS NULL
不足しているものを確認します。
Random_number_seriesテーブルはかなり静的ですか?数列はかなり断片化されていますか?
両方に「はい」の場合、私の最初の考えは、シーケンスに「ギャップ」テーブルを格納する方が効率的かもしれないということでした。
random_number_series_gaps(gap_start_number、gap_end_number)
If exists
(
select * from random_number_series_gaps
where @randomNumberFromMyApp between gap_start_number and gap_end_number
)
SELECT 'Random number does not exist!'