あることを確認できます。関数を利用して、「index_姓」インデックスの階層数と使用しているページ数を調べます。2階層で構成されていることが分かります)。関数で階層数と使用ページ数を調べることができますが、インデックスの中身までは見ることができません。PAGE」を利用する必要があります。3)の使用しているページ番号を取得することができます。ページで、「1」以上は、リーフより上の階層を表します。コマンドの第3引数へ与えることで、そのページの中身を見ることができるようになります。次のように入力すると、ページ番号「179」の中身を参照することができます。3)インデックスを作成しても効果のない列インデックスを作成しても効果のない列インデックスを作成すれば、基本的にはパフォーマンスが向上しますが、作成してもパフォーマンスの向上が見込めないケースがあります。検索条件にほとんど使用されない列に対してインデックスを作成しても、効果はありません。逆に、作成したことによってパフォーマンスの低下を招く恐れがあります。インデックスを作成すると、インデックスを作成した列のデータを更新した際に、インデックスそのもの(ツリー構造)も更新されるからです。したがって、検索条件にほとんど使用されない列で、かつ更新頻度が過剰な列に対してはインデックスを作成しないことをお勧めします。度も使用されていないインデックス(未使用のインデックス)や、使用回数の少ないインデックスを探すことができます。具体的な利用方法については、本自習書シリーズの「監視ツールの基本操作」で詳しく説明しています。数百件のデータを取り出すときに最も効果があります。検索条件に該当するデータが大量にある場合には、インデックスの効果が得られません。スキャンよりも効率が悪くなることがあるからです。スキャンを使用してデータ検索を実行します。「性別」列へインデックスを作成した場合の動作まずは、社員テーブルの「性別」列へインデックスを作成してみましょう。社員(性別)次に、グラフィカル実行プランの表示を有効にして、性別が「男性」の社員のみを検索してみましょう。スキャンが実行されていることを確認できます。2種類)は、検索条件に該当するデータが自ずと多くなるので、インデックスを作成しても利用されません。スキャンを使用してデータ検索を実行するのです。このインデックス「index_性別」は、不要なので削除しておきます。続いて、「姓」列に対して、検索条件に該当するデータ件数が多い場合に、インデックスが利用されるかどうかを確認してみましょう。演算子を利用して、姓が「A」で始まる社員を検索してみましょう。スキャンが実行されたことを確認できます。スキャンが実行されます。オプティマイザー」という機能(プログラム)が判断します。スキャンを実行します。負荷がどれくらいか)などをもとに判断しています。実行されない)非効率な検索が行われます。演算子で先頭をワイルドカード指定した場合の検索を試してみましょう。'%oki'」と指定して、姓が「oki」で終わる社員を検索してみます。ないことを確認できます。アイコンと非常に似ていますが、内部動作は大きく異なります。ノードを横方向へ全スキャンして、該当データを探し出す内部動作です。実行時間がかかります)。関数を利用して、検索を実行してみましょう。よって、リーフページを全スキャンしているので、効率の悪い検索が実行されています)。1つのインデックス「クラスター化インデックス」について説明します。レベルにはポインターではなく実際のデータそのものを格納するところです。ページとなり、ヒープが削除されます。社員テーブルの「姓」列に対してクラスター化インデックスを作成すると、次のようになります。このように、クラスター化インデックスでは、実際のデータがインデックス内へ吸収されるので、非クラスター化インデックスよりも検索のパフォーマンスが向上します。エクスプローラーから作成する場合は、次のように操作します。Tryそれでは、クラスター化インデックスを作成してみましょう。「姓」列へ作成していた非クラスター化インデックス「index_姓」を削除します。次に、「姓」列に対してクラスター化インデックスを作成します。インデックスID(index_id)は、「1」であることを確認できます。関数を利用して、クラスター化インデックスの階層数と使用しているページ数を確認してみましょう。3階層であることが分かります。ページ「0」が実データのページ数なので、実際のデータが「560」ページであることも確認できます。次に、「姓」列が「Aoki」さんの社員を検索して、クラスター化インデックスの効果を確認してみましょう。Seek」というアイコンが表示され、インデックス名「社員.index_姓」を確認することができます。これは、クラスター化インデックスを利用して検索を行ったという内部動作です。アイコンがないところにも注目してください。データを取得することができるのです。しなくて済む分、非クラスター化インデックスよりも検索のパフォーマンスが向上します。スキャンになった検索です)。検索が完了したことを確認できます。レベルに実際のデータが昇順に並び替えられているので、このような検索(先頭文字を指定した範囲検索)であっても、インデックスを利用して高速にデータを取得することができます。スキャン次に、クラスター化インデックスを作成した「姓」列以外の列を利用して検索してみましょう。Scan」というアイコンが表示されます。非常に似ていますが、意味は大きく異なります。このアイコンは、クラスター化インデックスのリーフレベルを横方向へ全件スキャンしたという内部動作です。スキャンとほとんど同じです。スキャンという概念がなくなるためです。(8)自己紹介minminnana地方でSE(プログラマ)をやって20年。気づけばいつの間にやら窓際人生。このまま余生を過ごすには若干心残りな2児と2匹(ウサギ、犬)の父。SEと言っても窓際なのでブログやWEBなどにはめっぽう疎い・・・。独学で.NET系を弄ってみるがCOBOLプログラマーにはだいぶ敷居が高い。