1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Oracle ExadataでUPDATE、もしくはDELETEしたい場合の高速化手法

Last updated at Posted at 2020-10-05

Oracle Exadataで一部のデータをUPDATE、もしくはDELETEしたい場合、少量のデータであれば問題ないのですが、大量データだと性能に影響がありSQLが全然戻ってこないことがあります。
パーティショニングされているテーブルであれば、下記のEXCHANGEを使った方法によりそれらを高速化することが可能です。

例えば、下記のようなパーティショニングされているテーブルがあり、そのパーティション内の一部データをDELETEしたい場合を想定。

スクリーンショット 2020-10-05 18.05.50.png

まずは対象パーティションの件数確認

SELECT COUNT(1) FROM SAMPLE_SCHEMA.HOGE_TABLE PARTITION(P_201902);

+-----------+
| COUNT(1)  |
+-----------+
|        5  |
+-----------+

CTASで交換用の一時テーブル作成。この時、DELETEしたいデータを一時テーブルに入れないようにSELECT。

CREATE TABLE SAMPLE_SCHEMA.TMP_TABLE 
AS 
SELECT * 
FROM SAMPLE_SCHEMA.HOGE_TABLE PARTITION(P_201902)
WHERE ID != "0003"
;

スクリーンショット 2020-10-05 18.32.35.png

一時テーブルの件数確認

SELECT COUNT(1) FROM SAMPLE_SCHEMA.TMP_TABLE; 

+-----------+
| COUNT(1)  |
+-----------+
|        4  |
+-----------+

EXCHANGEでパーティション交換

ALTER TABLE SAMPLE_SCHEMA.HOGE_TABLE EXCHANGE PARTITION P_201902
WITH TABLE SAMPLE_SCHEMA.TMP_TABLE; 

スクリーンショット 2020-10-05 18.32.42.png

対象パーティションの件数確認し、交換されたことを確認する。

SELECT COUNT(1) FROM SAMPLE_SCHEMA.HOGE_TABLE PARTITION(P_201902);

+-----------+
| COUNT(1)  |
+-----------+
|        4  |
+-----------+
1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?