4

SYBASEに約1mio行のテーブルがあります。このテーブルには現在インデックスが作成されていないので、今すぐ作成したいと思います。私の質問は

  1. インデックスを作成する前に、どのような予防策を講じる必要がありますか?
  2. このプロセスでは、より多くの表領域を割り当てる必要がありますか?
  3. 私が注意しなければならない他のパフォーマンスの考慮事項はありますか?

乾杯

ランジス

4

1 に答える 1

1
  1. マニュアルより。

    いつ索引付けするか

    次の一般的なガイドラインを使用してください。

    • IDENTITY 列に手動で挿入する場合は、一意のインデックスを作成して、挿入によって既に使用されている値が割り当てられないようにします。

    • ソート順 (order by 句で指定) で頻繁にアクセスされるカラムは、Adaptive Server がインデックス順を利用できるようにインデックスを作成する必要があります。

    • 結合で定期的に使用される列は、常にインデックスを作成する必要があります。これは、列が並べ替えられている場合、システムは結合をより高速に実行できるためです。

    • テーブルの主キーを格納する列には、特に他のテーブルの列に頻繁に結合される場合は特に、クラスター化インデックスが含まれていることがよくあります。クラスター化インデックスはテーブルごとに 1 つしか存在できないことに注意してください。

    • 値の範囲で頻繁に検索される列は、クラスター化インデックスに適している場合があります。範囲内の最初の値を持つ行が見つかると、後続の値を持つ行は物理的に隣接していることが保証されます。クラスター化インデックスは、単一値の検索にはあまり利点がありません。

    索引付けしない場合

    場合によっては、インデックスが役に立たないことがあります。

    • クエリでほとんどまたはまったく参照されない列は、インデックスの恩恵を受けません。これらの列の値に基づいてシステムが行を検索する必要はほとんどないためです。

    • 「男性」と「女性」または「はい」と「いいえ」のように、値が 2 つまたは 3 つしかない列は、インデックスのメリットをまったく得られません。

  2. 試す

    sp_spaceused tablename, 1

    ここにドキュメントへのリンクがあります。

  3. はい - Updating statistics about indexes

    ここにドキュメントへのリンクがあります。

于 2012-09-18T07:19:22.060 に答える