Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 11.0.1 (日本語) » SQL Anywhere サーバ - SQL リファレンス » システム・オブジェクト » システム・プロシージャ » システム・プロシージャのアルファベット順リスト

 

sa_index_density システム・プロシージャ

インデックス内の断片化とスキューの量に関する情報をレポートします。

構文
sa_index_density( 
  [ tbl_name
  [, owner_name ] ]
)
引数
  • tbl_name   テーブル名を指定する任意の CHAR(128) パラメータ。

  • owner_name   所有者名を指定する任意の CHAR(128) パラメータ。

結果セット
カラム名 データ型 説明
TableName CHAR(128) テーブルの名前。
TableId UNSIGNED INTEGER テーブル ID。
IndexName CHAR(128) インデックスの名前。
IndexId UNSIGNED INTEGER インデックス ID。このカラムには、次のいずれかの値が含まれます。
  • 0   プライマリ・キーの場合

  • SYSFKEY.foreign_key_id   外部キーの場合

  • SYSIDX.index_id   その他すべてのインデックスの場合

IndexType CHAR(4) インデックス・タイプ。このカラムには、次のいずれかの値が含まれます。
  • PKEY   プライマリ・キーの場合

  • FKEY   外部キーの場合

  • UI   ユニーク・インデックスの場合

  • UC   一意性制約の場合

  • NUI   ユニークでないインデックスの場合

LeafPages UNSIGNED INTEGER リーフ・ページの数。
Density NUMERIC(8,6) 各インデックス・ページが (平均で) どの程度埋まっているかを示す 0 ~ 1 の間の小数。
Skew NUMERIC(8,6) インデックス内の偏りのレベルを示す数。1 は完全にバランスの取れたインデックスであることを示します。値が大きくなるほどスキューも多くなることを示します。
備考

sa_index_density システム・プロシージャは、インデックスの断片化とスキューの程度に関する情報を取得するときに使用します。多数のリーフ・ページを持つインデックスの場合は、Density 値を大きくして不均衡値を小さくすることをおすすめします。

インデックスの密度は、インデックス・ページの平均の満杯度をパーセントとして反映しています。密度が 0.7 の場合、平均 70% のインデックス・ページにインデックス・データが入っていることを示しています。インデックス・スキューは、平均密度からの一般的な偏差を反映しています。オプティマイザが選択性推定を行う場合、このスキュー量は重要です。

リーフ・ページ数が少ない場合は、密度とスキューの値を考慮する必要はありません。密度とスキューの値は、リーフ・ページ数が多いときだけ重要です。リーフ・ページ数が多い場合、密度の値が低いと断片化を表し、不均衡値が高いとインデックスが偏っていることを示します。どちらも、パフォーマンス低下の要因になります。REORGANIZE TABLE 文を実行すると、この両方の問題に対処できます。REORGANIZE TABLE 文を参照してください。

テーブルを指定しないでこのプロシージャを呼び出すと、データベース内のすべてのテーブルのすべてのインデックスに関する情報が返されます。

また、アプリケーション・プロファイリング・ウィザードを使用すると、インデックスの密度とスキューのレベルが許容範囲内にあるかどうかを判断できます。アプリケーション・プロファイリング・ウィザードを参照してください。

パーミッション

DBA 権限が必要です。

関連する動作

なし

参照

次の例は、sa_index_density システム・プロシージャを使用して、データベースのすべてのインデックス内の断片化とスキューの量をまとめた結果セットを返します。

CALL sa_index_density( );