![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?8acaa2e)
こんにちは
Oracleサーバ負荷試験のため、下記2つの試験をやりました。
1、Commitなしで500万件のレコードをDBにINSERTしました。
2、Commitありで400万件のレコードをDBにINSERTしました。
その後、Delete from TABLEで中身を削除しましたが、
そのテーブルのSELECTがすごく重くなっているのは変わりませんでした。
心当たりがある方、解決法を教えていただけませんか?
ちなみに、関係あるかどうか分かりませんが、そのテーブルの初期化サイズが7100KBぐらいなっています。ほかのテーブルは64KBぐらいですが、もしそれが原因だったら、最適化する方法ありますでしょうか?
(できれば、テーブルの削除・再作成を避けたいです。)
No.1ベストアンサー
- 回答日時:
こんにちわ。
> テーブルのSELECTがすごく重く・・・
Oracle は最終レコードと言う管理を行っていないため、
全件検索時は過去にデータが格納されていた所 (High Water Mark)
まで検索が行われます。
データ削除前に900万件のレコードが入っていたため、たとえ全レコード
を削除しても、900万件分の無効ブロックが読み込まれます。
> 心当たりがある方、解決法を教えていただけませんか?
Delete ではなく、Truncate 文を使うと空きブロックの解放も
行われるので、性能が改善する筈です。
但し、Delete 文と違って条件を指定しての削除はできませんので
注意して下さい。
どうしてもDelete で削除した後に空きブロックの解放を行う
必要があるのであれば、「Alter table 表名 move」で
解放可能です。
但し、Alter table を行うと、該当表に定義されている索引が
無効になりますので、その後
「Alter index 索引名 rebuild」で索引も再作成して下さい。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Ruby pandasでsqlite3にテーブル作成・追加・読み出しでindexの取り扱い方教えてください 5 2023/03/08 09:57
- PostgreSQL PostgreSQL レコードからアイテム種類数を取得したい 2 2022/11/23 22:31
- Access(アクセス) access,vbaでフォルダ内のファイルをテーブルにインポート、ファイル名もフィールドに追加したい 1 2022/08/31 11:11
- その他(データベース) IT用語について質問です。 以前ITパスポートの試験を受けた際にデータベースが何の集まりかについての 2 2022/12/10 12:29
- MySQL 下の画像はSQLの4大命令の性質をまとめたものであるらしいです UPDATE INSERT DELE 1 2023/06/07 15:36
- その他(データベース) pythonでsqlight勉強中、クエリー結果の利用法教えて下さい 1 2022/04/28 20:38
- Oracle 下記のsqlで取得されるレコード以外を取得する方法ありますでしょうか。 SELECT B.番号, B 2 2022/04/20 23:21
- Access(アクセス) アクセス 削除するレコードを含んだテーブルを指定してくださいのエラー対処方法 1 2022/11/24 15:01
- Oracle sqlで質問です。 aテーブルとbテーブルがあり、下記のsqlで取得したidとnameに一致しないレ 1 2022/04/20 20:34
- Visual Basic(VBA) ExcelからAccessのテーブルに書き込む時に時間がかかる 1 2022/10/14 20:38
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
where句中のtrim関数について
-
データ
-
AccessのSQL文で1件のみヒット...
-
group byの並び順を変えるだけ...
-
【SQL】違うフィールド同士の集...
-
BLOB型項目をSQLの検索条件に指...
-
単一グループのグループ関数で...
-
ACCESS レコードの並び順について
-
【PL/SQL】FROM区に変数を使う方法
-
「数字で始まらない」ものを抽...
-
fetchについて
-
1レコード全てを改行なしで表...
-
SELECT FOR UPDATE で該当レコ...
-
SQLで条件にヒットしたレコード...
-
大量レコードをTRUNCATEせずに...
-
アクセスのレポートでレコード...
-
引数によってwhere句を切り替え...
-
文字2桁、3桁交じりの文字列...
-
int型フィールドにnullを登録で...
-
select文の実行結果に空白行を...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
単一グループのグループ関数で...
-
【PL/SQL】FROM区に変数を使う方法
-
SQL*Loader Append
-
where句中のtrim関数について
-
AccessのSQL文で1件のみヒット...
-
group byの並び順を変えるだけ...
-
アクセスのレポートでレコード...
-
トランザクションログを出力せ...
-
データ
-
SELECT FOR UPDATE で該当レコ...
-
SQLで条件にヒットしたレコード...
-
「数字で始まらない」ものを抽...
-
引数によってwhere句を切り替え...
-
1レコード全てを改行なしで表...
-
BLOB型項目をSQLの検索条件に指...
-
updateで複数行更新したい
-
【SQL】違うフィールド同士の集...
-
osqleditについて
-
レコードの更新履歴について
-
あるカラムに同じ値を持つレコ...
おすすめ情報