特定の日時(つまり、2012年5月1日から2012年5月31日まで)のデータベースで複雑なクエリのリストを実行しています。次に、2012年6月1日から2012年6月30日まで同じクエリを実行する必要があります。次に、レポートの目的で結果を結合します。
クエリでは、一時データを保持するためにいくつかのテーブル変数を使用しました。データベースが大きいため、テーブル変数のサイズも大きくなります。これらのテーブル変数を再利用する方法はありますか?
DROP、Truncateは機能しません。@tableからすべてのデータを削除する必要がありますか?もしそうなら、それは遅いでしょうか?@tableには大量のデータがあるため、バッチ削除を行う必要がありますか?
ところで、私はすべてのクエリを1つのSPファイルに入れる必要があり、システムの設計方法が原因で関数や他のSPを呼び出すことができません。
ありがとう
=============================
クエリにループはありません。それは次のように機能します:
select ..... select ..... update ..... join ..... ..
2012年5月1日から2012年5月31日までの一連のクエリを実行します。次に、2012年6月1日から2012年6月30日までの同じクエリセットを実行する必要があります。
クエリには多くの論理的な内部があるため、これら2つを1つのクエリセットに結合することはできません。システムが設計されているため、クエリの関数またはSPを呼び出すことはできません。最初のクエリセットを実行してから、2番目のクエリセットを順番に実行する必要があります。
問題は、データが多すぎること、@tableが大きすぎることです。@tableを再利用できれば、問題は解決します。
ありがとう
===============================
はい、今、同じコードで、2つの異なる日時間隔で2回繰り返します。ただし、コードでは、日時の違いに基づいて、論理的な内部の異なるプロセスがあります。申し訳ありませんが、実際のコードを投稿することはできません。ただし、このプロセスは、パラメータとして異なる日時を持つSPのようなものです。
ただし、この場合はSP / functionを使用できないため、同じコードを2回ハードコーディングする必要があります。理想的には、コードを繰り返すたびに異なる@tableを使用する必要があります(現在、3回繰り返す必要があります)が、データサイズのため、3回繰り返すと@tableが大きすぎます(それぞれに複数の@tableが必要です)論理的な部分を行うため)。
多分私は一時的なテーブルを使用したほうがいいですか?だから私は新しい「リピート」を始めるときにそれを落とすことができますか?
ありがとう