
お世話になります
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を探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
AccessのDAO.ExecuteとDoCmd.Ru...
-
Excel-VBAの「しばらくお待ちく...
-
アクションクエリが実行できない
-
SQLCMDにて教えていただきたい...
-
SQLの実行時間を測定するには?
-
サーバーと実行端末が違う場合...
-
EXEファイルの実行について
-
Access2010のマルチコアCPUへの...
-
Excelフィルタ抽出で「検索して...
-
ORACLEでのexportのbatファイル...
-
指定時刻のクエリ自動実行
-
ストアドの速度がクエリの30...
-
SQLのエラー(~付近に不適切な...
-
(SQLSERVER) 別サーバーへテー...
-
エクセルマクロで指定範囲内の...
-
A5:SQL Mk-2 でレンサバMySQLへ...
-
セキュリティソフト カスペルス...
-
SQLで同じDBに対し2つのコネク...
-
Oracle 8i コンマ(,)を含むデ...
-
ACCESSからのODBC接続のみ応答...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excel-VBAの「しばらくお待ちく...
-
AccessのDAO.ExecuteとDoCmd.Ru...
-
SQLServerのジョブからバッチを...
-
アクションクエリが実行できない
-
ストアドの速度がクエリの30...
-
sqlcmdでクエリの実行結果をバ...
-
Excelフィルタ抽出で「検索して...
-
SQLCMDにて教えていただきたい...
-
SQLServer2005のストプロでxp_c...
-
データベース SQL のセッショ...
-
100万件レコードdelete
-
バッチからメンテナンスプラン...
-
ユーザー定義関数内でのsp_exec...
-
UPDATE時のSETの実行順について
-
SQL-Loaderが動かないです。
-
指定時刻のクエリ自動実行
-
バッチでのSQL実行結果の分岐処...
-
SQLサーバーのジョブでのexeフ...
-
同じSQL文で速度がだいぶ違う
-
ORACLEでのexportのbatファイル...
おすすめ情報