
Oracle SQLチューニング講座(8)
複合索引(コンポジット索引)が有効なケース Page 3/3
株式会社アゲハ
倉田 寛正
2005/1/20
Oracle8iまで、複合索引を利用させるためには、複合索引の先頭列がWHERE句の条件列に含まれている必要がありました。そのため、さまざまな検索パターンが存在する場合には、索引スキャンを行わせるために複数の複合索引を作成することになり、その結果、更新などのパフォーマンスに悪影響を及ぼしてしまうことがありました。
Oracle9iからは索引スキップ・スキャン機能により、索引内の先頭列がWHERE句の条件列に含まれていなくても、その複合索引を使用することが可能になりました。索引スキップ・スキャン機能を利用することで、表に作成する複合索引の個数を少なくできるため、表に対する更新処理のパフォーマンス劣化を抑えることが可能になります。
それでは、以下のように「l_shipmode」列が先頭である複合索引を使用して、索引スキップ・スキャンの動作を確認してみましょう。
![]() |
| 図9 複合索引の列位置の確認方法 |
「INDEX_SS」ヒントを使用して索引スキップ・スキャンをオプティマイザに指示し、WHERE句の条件列には索引の先頭列が含まれていないことに注目して、SQLトレース、TKPROFユーティリティを使用して実行計画を取得します。
![]() |
| 図10 索引スキップ・スキャンによる先頭列を含まない複合索引の使用 |
図10の実行計画から、複合索引の先頭「l_shipmode」列が含まれていなくても、「idx2_lineitem」索引が索引スキップ・スキャンによって使用されていることが確認できます。
◇
複合索引の有効利用は、検索性能を向上させるうえで、利用できる機会が多くある非常に重要なテクニックですので、ぜひトライしてみてください。次回は、引き続き索引を使用したチューニング・テクニックを紹介します。(次回に続く)
| 3/3 |
| Index | |
| 連載 Oracle SQLチューニング講座(8) 複合索引(コンポジット索引)が有効なケース |
|
| Page
1 ・複合索引(コンポジット索引)の使用 |
|
| Page
2 ・複合索引(コンポジット索引)をさらに有効利用する −COUNT(*)の高速化 |
|
| Page
3 ・索引スキップ・スキャンの使用 |
|
| 連載 Oracle SQLチューニング講座 |
TechTargetジャパン
Database Expert フォーラム 新着記事
- IBMが歴史を変える!? 新カテゴリの製品を発表 (2012/5/25)
IBMは新たな製品カテゴリとなる「PureSystems」を発表。DB2 10とビッグデータの関係、PureSytemsの斬新さはどこかに迫ります - クラウド時代のデータ処理を支える分散KVSの可能性 (2012/5/23)
現在、高速データ処理の主流はインメモリ型データ処理だが、別の方法として分散KVSが注目を集めている。今回は分散KVSについて話を聞いた - 複数の表からデータを取り出して表示させる(2) (2012/4/23)
前回はSQLの基本的な結合構文について説明しました。今回は、より複雑な自己結合や外部結合について説明します - SQL Server、OOWにIQ、盛りだくさんの4月 (2012/4/20)
オラクルオープンワールドが3年ぶりに東京で開催されたほか、SQL Server 2012が提供開始されるなど、今月は話題が盛りだくさんです
|
|
@IT 新着記事
キャリアアップ
スポンサーからのお知らせ
- - PR -
イベントカレンダー
- - PR -
お勧め求人情報
転職/派遣情報を探す
**先週の人気講座ランキング**
〜 Android編 〜
ホワイトペーパー(TechTargetジャパン)
ソリューションFLASH


