
お世話になります
SQL Serverで、
100万件のレコードを削除したいのですが
どのような方法が効率よいでしょうか
また、メモリ負荷など、クライアント側から分かるような実行計画とかは
ありませんでしょうか?
1.100万件を1回でdelete
2.100万件を複数回に分けてdelete
3.100万件を1行ずつキー指定でdelete(deleteを100万回実行)
100万件deleteしてる場合も、他処理でレコードが登録、更新される可能性が高いため、
そちらの処理がタイムアウトなどのエラーにならないようにしたいです
詳しい方に聞いたところ、
delete発行する際に、メモリにアクセスしてるので、
3だとそれが単純計算で100万倍になるので、負荷が高いのでは?
という事でした。
ご教授の程、よろしくお願い致します
A 回答 (3件)
- 最新から表示
- 回答順に表示
No.1
- 回答日時:
もちろん、1回で実行した方が効率は良いです。
処理の1回毎にSQL構文解析→実行計画→実行という動作を行いますし、その都度にメモリやHDDもアクセスすることはあります。できるだけ処理は少ない方が良いです。
>100万件deleteしてる場合も、他処理でレコードが登録、更新される可能性が高いため、
ファントムリードにならないようにきっちりと専有ロックをかけた方が良いです。
で、他処理にはある程度の時間的余裕をもたせられるとベストなのですが。
まあ、その100万件の主キーが何でインデックスがどれくらいあって制約がどのように作られているか、項目数がいくつなのかもわからないので一般論です。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するQ&A
- 1 Win NT Server 4.0からWin 2000 ServerへのSQL Server 2000の移動
- 2 SQLでのレコード抽出について、以下のテーブルよりレコード抽出するには、SQLをどのように組めば宜し
- 3 数百万件レコードのdelete
- 4 SQL Server;レコードが増えたタイミングで外部プログラムの実行
- 5 Windows Server 2008とSQL Serverでのサイト構築について。
- 6 sql serverのsqlについて
- 7 SQL ServerのSQL実行時のエラーについて
- 8 OracleとSQL ServerのSQL文上での差異について
- 9 SQL ServerのデータをSQL Databaseに連携したい
- 10 SQL Server を使っています。SQLの質問です。
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
人気Q&Aランキング
-
4
UPDATE時のSETの実行順について
-
5
Excelフィルタ抽出で「検索して...
-
6
静的SQL、動的SQL?
-
7
SQLの実行時間を測定するには?
-
8
サーバーと実行端末が違う場合...
-
9
Access2010のマルチコアCPUへの...
-
10
SQLServerのジョブからバッチを...
-
11
ACCESSのツールバー「フォーム...
-
12
100万件レコードdelete
-
13
IDENTITY列を持つテーブルへBCP...
-
14
ORACLEでのexportのbatファイル...
-
15
ストアドプロシージャでcsvファ...
-
16
ユーザー定義関数内でのsp_exec...
-
17
accessでSQLをファイルから実行...
-
18
ストアドの速度がクエリの30...
-
19
Oracle 8i コンマ(,)を含むデ...
-
20
PostgreSqlでFunctionの作成に...
おすすめ情報