BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース SQL Server 2008の索引付けのヒントおよびコツ

SQL Server 2008の索引付けのヒントおよびコツ

MS MVPであり、人気のあるHitchhiker's Guide SQL Serverの書籍の著者であるBill Vaughn氏はSQL Serverの索引付けのヒントやコツの概略を提供している(リンク)。トピックはSQLサーバの高可用性およびパフォーマンスのエキスパートである Kimberly Tripp氏(リンク)およびPaul Randall氏(リンク)のガイダンスに基づく。

そのリストのハイライトは以下のとおりである。
  • Page Density
    行サイズの最適化:SQL Server 2005 (以降)は8Kの列をサポートする。このことは、行は裕に80K以上になりえることを意味する。これは理にかなっているか?一般的には、かなっていない。 行サイズの管理は、効率性に関心がある人ほど、重要である。パフォーマンスを良くしたり、空間を最大限に活用することのこつは、8Kページが行で満たされ ている場合、無駄になっている空間がほとんどないようにすることである。これは、行サイズが(およそ)4K以上であるなら、1行のみがページに適合し、 (およそ)4Kの空間がページで無駄になることを意味する。二次的な問題は、索引ページ数も同様にページに対応するために増やす必要があることである。
  • Filtered Indexes(リンク)
    SQL Server 2008の新機能である。索引にWHERE節を追加することが可能であるため、索引を最も重要な行に集中させることが可能である。
  • Selectivity
    選択度:クエリオプティマイザ(QO)がSQLを調べ、選択度が操作を実行するために索引を使用すべきかどうかを、決定します。索引の統計 (「stats」)を処理することで(また索引が1つから多くのstatsを持つことができる)、QOは選択度を決定することができる。基本的には、索引 を使うことの選択を検討し、選択された行を1つずつやって見せたり、テーブルスキャンをする。Kimberly氏が使用した例は、その動作方法を明確にし たが、以下の内容は驚きだった。「(列で選択された)行数が、テーブルのデータページのおよそ4分の1である場合、索引は役に立たず、選択された行の フェッチのために、テーブルスキャンを実行するほうが効率的である。しばしばテーブルにある行の5%未満であることが分かる...」。

SQL Server 2005からの索引の統計(リンク)、列の選択、索引のフラグメント化およびロッキングに関する標準プラクティスは、今でも適用される。

Tripp氏やRandall氏も、DTA(Data Engine Tuning Advisor)(リンク)を貴重なツールと見なしている。DTAはSQL Server 2008でアップデートされ、dtaコマンドラインインターフェイスを通じ、改善されたワークロードの構文解析、拡張されたスケーラビリティ、複数データ ベースのチューニング、向上したスクリプト記述サポートなどを含む新機能を提供している(リンク)

原文はこちらです:http://www.infoq.com/news/2008/08/sqlindexing

この記事に星をつける

おすすめ度
スタイル

BT