web-dev-qa-db-ja.com

最適化された最適なソリューションを設計する方法:巨大な乱数を生成し、この数値が存在するかどうかをデータベーステーブルで確認します

次のようなテーブルが1つあります。

テーブル名:

random_number_series

その列は次のとおりです。

number      [numeric(10)]
name        [varchar(10)]
status      [tinyint(1)]
type        [tinyint(1)]
createdDate [datetime]

このテーブルには、約2億5000万から3億行があります。

今、私たちの要件は、大量、つまり100万の乱数を生成することです。この生成された数値が上記の表(数値列付き)にあるかどうかを確認したいと思います。

これをどのように行うことができますか?

注意:

->アプリケーションロジックで乱数が生成されます。

->戦略/擬似コードを知りたいのですが、どのように設計すればよいですか?

1
murtaza.webdev

百万の数字を表に入れてください。次に、テーブルを一緒にJOINして、どのテーブルが存在するかを確認します。またはLEFT JOIN ... IS NULL不足しているものを確認します。

1
Rick James

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!'
0
Ryan Cooper