- - PR -
複合索引
1|2|3
次のページへ»
| 投稿者 | 投稿内容 | ||||
|---|---|---|---|---|---|
|
投稿日時: 2006-02-02 15:13
2列が常にともに条件句に含まれる場合、
索引は、以下のどちらの方法で作成したほうが速いのでしょうか? CREATE INDEX IDX_NAME ON TBL_NAME (RETU1, RETU2); OR CREATE INDEX IDX_NAME1 ON TBL_NAME (RETU1); CREATE INDEX IDX_NAME2 ON TBL_NAME (RETU2); 複合索引の場合、索引がどのように作成されるのかがよく分からないのです。 (ROWIDの格納方法など、 ...うまく説明できなくてすいません) | ||||
|
投稿日時: 2006-02-02 15:19
検索条件はどのようなものを想定してますか?
| ||||
|
投稿日時: 2006-02-02 16:03
表の結合に使用するので、簡単に書くと以下のような感じです。
SELECT A.ID, A.NAME, B.SONOTA FROM TBL_A A, TBL_B B WHERE A.ID = B.ID AND A.NAME = B.NAME ; | ||||
|
投稿日時: 2006-02-02 16:32
アクセスするオブジェクトの数を考えると複合索引かなという 気がしますが、実際には SQL トレースとかを取ってみないと 分からないかも。 # 単一列索引を作っても片方しかアクセスしないかもしれないし。 _________________ もしもし@RMAN 友の会 | ||||
|
投稿日時: 2006-02-02 16:40
テーブル間の結合キーといいうことですが、
主キー設定などはしてないのでしょうか。 | ||||
|
投稿日時: 2006-02-02 16:46
片方のテーブルは、その2列が主キーなので、PK制約で索引が作成されます。
もう片方は、主キーが単一列で別にあるので、現在は1列ずつそれぞれに索引を作成しています。 | ||||
|
投稿日時: 2006-02-02 16:57
上記のテーブル間の結合のみのSQL文の場合、
TBL_Aは、インデックスが使用されると思いますが、 (TBL_A側で主キー設定がされていると仮定) TBL_Bのデータを全件サーチし、1レコードずつ、 キーを利用してTBL_Aと接続することになると思うので、 TBL_Bはインデックス設定をしても使用されないと思います。 さらに絞込条件で、B.ID = 'XXX' とか B.NAME= 'XXX'という 指定がある場合は別ですが。 | ||||
|
投稿日時: 2006-02-02 17:20
すいません。簡単に書きすぎたので、もう少し具体的に。。。
SELECT A.SYURUI, A.KAZU, B.MAKER, B.S_NO FROM TBL_A A, MASTER_TBL_B B WHERE A.H_CD = B.H_CD AND A.C_CD = B.C_CD ; TBL_A : H_CD,C_CDには単一列索引(主キーは他の列、主キー列は使用しない) MASTER_TBL : H_CD,C_CDの2列で主キー zillollさんの解説からすると、この状態がベストということでしょうか? 何度もすいませんが、よろしくお願いします。 | ||||
1|2|3
次のページへ»
