- - PR -
Oracleの複合索引に関して
1
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2006-03-19 00:03
現状実機によるテストができないため、
ご存知の方いらしたら教えていただけないでしょうか。 Oracleの複合索引に関して教えていただきたいのですが、 今まで、WHERE句で指定するフィールドに対して、のみIndexを張ればよいと思っていましたが、以下のURLにはSELECT句でも使用する列を含めて、 Indexを張ることでパフォーマンスをあげています。 通常Indexを張る場合はSELECT句でも使用するフィールドを含めて、 Indexを張った方が良いのでしょうか? ( 例えば、SELECT * をよく使うテーブルに対しては全フィールドに対して張る? ) URLの図4辺り http://www.atmarkit.co.jp/fdb/rensai/orasql08/orasql08_1.html | ||||||||
|
投稿日時: 2006-03-19 01:05
こんばんは
これは実際の環境でテストしてみないとなんともいえないと思います。 インデックスファイルが増えればそれだけオープンするファイルも増えるわけで通常は遅くなります。 更新が頻繁にかかるテーブルなんかだったら悲惨なことになりそうですが... | ||||||||
|
投稿日時: 2006-03-19 18:02
お返事有難うございます。
やはり実機で確認しないとわからない ということでしょうか? また、SELECT句でも使用する列を含めて、 Indexを張ることでパフォーマンスをあげることができるというのは まぎれもない事実なんですね。。。 | ||||||||
|
投稿日時: 2006-03-19 19:40
こんばんは
この辺りはちょっと疑問です、必ずしもあがるわけではないと思います。 select column1 from 〜 where column1 = 〜 であれば、インデックスファイルを参照するだけで存在するデータがわかるので それをそのまま取得データとして適用出来ると思いますが select column1,column2,... from 〜 where column1 = 〜 な感じだと column1,column2,...それぞれのインデックスファイルを開きそのインデックスが指しているレコードの関係を解決したりする手順になると思いますが、 インデックスが多すぎるとインデックスファイルをオープンするオーバーヘッドで 逆に遅くなるのではないでしょうか?リソースも無駄遣いになる気もしますが... 昔のことで申し訳ないんですけど、100レコード程度のデータの場合インデックスをまったく貼らないほうが速いということもありました。 なので実際の環境に近い状態でテストしてみないとなんともいえないと思います。 それかOracleのなかのひとに聞いてみないと...w | ||||||||
|
投稿日時: 2006-03-20 10:29
索引を使ってもパフォーマンスがダウンすることは十分あり得ます。 検索対象のデータが全ブロックに分散していたら、索引スキャンした上に 全ブロックスキャンが実行されますし。つまり、単なる full table スキャン一発の方がよっぽど速く処理できます。 CBO なら(で、ヒストグラムも取得していたら)この辺りは適切な 実行計画を判断してくれますが、RBO だったら(というか統計を 取っていなかったら)SQL の構文通り索引を参照してブロックも参照して、 パフォーマンスががた落ちになることもあるでしょう。 _________________ もしもし@RMAN 友の会 | ||||||||
|
投稿日時: 2006-03-20 12:21
あの記事はあくまでテクニックの一つとして紹介しているだけなので、常にSELECT句で使用するフィールドもインデックスに含めたほうがいいという話ではありません。
どうしてもパフォーマンスを上げたいけど、他の方法では困難な場合に検討してみてはどうですか?くらいに思っておいたほうが吉かと。 | ||||||||
|
投稿日時: 2006-03-20 12:38
いまこの記事を拝見しました。 この記事はあくまでパフォーマンスをあげる手段の一つとして複合索引を貼るとよいケースがある、と紹介しているのであって、 実際の実行計画まで明示し、なぜ速くなるのかを解説してくださっています。 なので、kiraさんも実行計画を確認して判断するのが一番かと思います。
この記事では「まぎれもない事実」として書いているのではありません。 せめて実機でなくとも、開発環境や検証環境で実行計画を取るくらいのことはやるべきだとおもいます。 _________________ takepon てんてこダンス | ||||||||
|
投稿日時: 2006-03-23 23:06
皆様、ご意見有難うございました。
takeponさんのおっしゃるとおり、テスト環境なり、作ってみるところから はじめたいと思います。 |
1