Oracle Databaseを使用したクライアントサーバシステムの改修を行っています。
前提・実現したいこと
現行システムに以下のような定義の「商品マスタ」テーブルがあります。
DDL
1CREATE TABLE "商品マスタ" ( 2 "商品ID" NUMBER(8,0) NOT NULL ENABLE, 3 "商品名" VARCHAR2(100 BYTE), 4 ..., 5 CONSTRAINT "商品マスタ_PK" PRIMARY KEY ("商品ID") 6 USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS 7 STORAGE( 8 INITIAL 458752 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 9 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 10 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT 11 ) 12 TABLESPACE "表領域A" ENABLE 13) SEGMENT CREATION IMMEDIATE 14PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 15OCOMPRESS LOGGING 16STORAGE( 17 INITIAL 6291456 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 18 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 19 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT 20) 21TABLESPACE "表領域A"
今回、新たに「商品マスタ更新履歴」テーブルを作成し、「商品マスタ」テーブルのUPDATE時にトリガを起動してUPDATE対象の行の更新前データを「商品マスタ更新履歴」テーブルに残していくことになりました。
DDL
1CREATE TABLE "商品マスタ更新履歴" ( 2 "商品ID" NUMBER(8,0) NOT NULL ENABLE, 3 "更新日時" DATE NOT NULL ENABLE, 4 "更新者ID" CHAR(8 BYTE) NOT NULL ENABLE, 5 "商品名" VARCHAR2(100 BYTE), 6 ..., 7 CONSTRAINT "商品マスタ更新履歴_PK" PRIMARY KEY ("商品ID", "更新日時", "更新者ID") 8 ...
質問したいこと
- この「商品マスタ更新履歴」テーブルについて、表定義の列順序および複合主キーの列順序によってINSERTの速度は変化するでしょうか? 以下のA案/B案どちらのほうが高速ですか?
2. この「商品マスタ更新履歴」に対して主キー項目すべてをWHERE条件に含めて1行のみSELECTしてくる場合、表定義の列順序および複合主キーの列順序によってSELECTの速度は変化するでしょうか? 以下のA案/B案どちらのほうが高速ですか?
(なお、プロジェクトの規約により複合主キーの列順序は表定義の列順序と同じでなければなりません。)
また、情報元ソースのURLもいただけると大変うれしいです。
列順序案A: "商品ID", "更新日時", "更新者ID"
列順序案B: "更新日時", "更新者ID", "商品ID"
補足情報
データベースのバージョン:Oracle Database 12c
データベースについてはズブの素人なので、記載すべき前提条件などが漏れていればお手数ですがご指摘いただけると嬉しいです。
よろしくお願いします。

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/05/21 00:25