SQL サーバーから取得したいデータがあります。
この古いデータベースには主キーが関連付けられていないため、データを取得することは、Excel スプレッドシート (実際には何年も前に作成されたもの) にクエリを実行するようなものです。
ただし、このデータについてレポートを実行する必要があります。
現在、特定の期間の個別のシリアル番号のリストを取得してから、特定のシリアル番号のすべてのレコードを取得しています。1 か月の時間枠の場合、これは 1500 から 3000 のシリアル番号になる可能性があります。char(20)
シリアル番号の長さは 15 文字しかありませんが、シリアル番号フィールドは としてフォーマットされます。
更新を開始
- 通常、このテーブルには、 ごとに 5 ~ 15 のエントリがあります
Serial_Number
。 - このテーブルにデータを書き込んでいるマシンは最大 10 台であるため、同じ
Date_Time
値が可能です。
更新を終了
このプロセスにはしばらく時間がかかりますが、リスト内の異なるシリアル番号間で Windows フォームをプログレス バーで更新して、管理者が何かが起こっていることと、あとどれくらいかかるかを知ることができます。
私は常にこのクエリをより速く実行しようとしています。
WHERE
今、次のような句を使用して必要なデータを取得することを考えています。
SELECT Col1, Col2, Col3
FROM Table1
WHERE Serial_Number IN (
SELECT DISTINCT Serial_Number
FROM Table1
WHERE Date_Time Between @startDate AND @endDate
)
私の質問は次のとおりです。特に、特定の期間中に非常に多くの異なるシリアル番号があるため、これに遭遇する可能性のある問題はありますか.
そしてもちろん、管理職の誰かが、退屈しているときに 1 年分のデータを実行しようとすることも知っています。それから、彼らはイエスが生まれたときからのデータを実行しようとします。
質問の言い換え:渡すことができるアイテムの数を制限する条項WHERE
の方法に制限はありますか?IN