SQL Serverは、インデックス(指数)を作成します

インデックス説明:

インデックスは、データベースのインデックスが本をカタログに似て、あなたはすぐに本を読んでする必要がなく、カタログの著書に必要な情報を見つけることができますクラスタ化インデックスと非クラスタ化インデックスに分かれています。

インデックスの主な目的は、SQL Serverシステムのパフォーマンスを向上させるクエリデータをスピードアップし、システムの応答時間を短縮することです。

しかし、クエリのパフォーマンスを向上させるためのインデックスは万能薬ではない、またそれは、より確立されたインデックス、良いです。インデックスは、データの効率が低いことを見つけるため句は、データを見つけることを助長されていませんWHEREで、以下を建てました。インデックスは、より多くの構築、追加、変更、およびデータ・テーブル自体を更新することに加えて、これらの操作を行うための操作、SQL Serverを削除するだけでなく、連帯して今すぐすべてのインデックスを更新し、インデックスがあまりにも多くのハードディスクを無駄になるために助長されていませんスペース。

 

インデックスカテゴリ:

中国の辞書インデックスはすぐにあなたが探している単語を見つけることができピンインの省や資本金に応じて、前のディレクトリに似ています。

インデックスのみ(UNIQUE):各列のインデックス値が一意(ユニーク制約を作成するために、システムは自動的に一意のインデックスを作成します)

プライマリキーインデックス:テーブルの主キー列を作成するときに指定したが、それは自動的に主キーインデックスを作成し、独自の特性を持っています。

クラスタ化インデックス(CLUSTERED):クラスタ化インデックスは、レコードがクラスタ化インデックス物理的に連続した存在に保存されているので、それは背後にある表音過去であることは確かにBと同じで、辞書音素検索を使用するのと同じです。

非クラスタ化インデックス(NONCLUSTERED):非クラスタインデックスがラジカル辞書ルックアップの使用と同等であるが、非クラスタ化インデックスは、連続的な物理ストレージが論理的ではなく、連続的です。

PS:クラスタ化インデックステーブルは、複数の可能代わりにテーブルの唯一のクラスタ化インデックスを持つことができます。

どのような状況のインデックスの使用の下で:

構文:

CREATE [UNIQUE] [CLUSTERED | NONCLUSTERED] INDEXのINDEX_NAME    
    ON([| ASC COLUMN_NAME <オブジェクト> DESC] [、... N])    
    [WITH <backward_compatible_index_option> [、... N]]   
    [ON {filegroup_name | "デフォルト" }]  
  
 <オブジェクト> :: =   
{   
    [データベース名。[OWNER_NAME]。| OWNER_NAME。]    
    table_or_view_name   
}  
  
 <backward_compatible_index_option> :: =   
{    
    PAD_INDEX  
   | FILLFACTOR = FILLFACTOR  
   | SORT_IN_TEMPDB  
   | IGNORE_DUP_KEY  
   |STATISTICS_NORECOMPUTE   
   | DROP_EXISTING    
}

パラメータ:

UNIQUE:表またはビューの一意のインデックスを作成します。ユニークなインデックスが同じインデックスキーを持つ2つの行を許可していません。集計インデックス付きビューは一意でなければなりません。あなたは列が重複する値を持つ一意のインデックスを構築したい場合は、まず重複を削除する必要があります。

CLUSTERED:指定されたインデックスは、クラスタ化インデックスのために作成したことを示しています。索引を作成する、キーの論理的な順序は、テーブル内の対応する行の物理的順序を決定します。(またはリーフレベル)基礎となるクラスタ化インデックスは、テーブルの実際のデータ行を含んでいます。

NONCLUSTEREDは:指定されたインデックスは、非クラスタ化インデックスが作成したことを示しています。指定されたテーブルインデックスの論理的な順序を作成します。非クラスタ化インデックス、インデックスのソートに独立してデータ線の物理的順序のために。

INDEX_NAME:インデックスが作成された名前を表して指定します。

データベース名:指定したデータベース名ことを示しています。

OWNER_NAME:指定された所有者にあることを示します。

テーブル:テーブルの指定された名前は、インデックスを作成することを示しています。

ビュー:指定されたインデックスを作成するために、ビューの名前を表します。

コラム:インデックス内の1つまたは複数の列をベースにしています。コンビネーションインデックスが指定した列の組み合わせとして作成することができ、二つ以上の列名を指定します。

[ASC | DESC]は:指定された昇順こと又は特定のインデックスのカラム方向の降順示します。デフォルトはASCです。

filegroup_nameに:指定したファイルグループにインデックスを作成します。位置が特定されておらず、表またはビューがパーティション化されていない場合、インデックスは、ベーステーブルであるか、または同じ文書のセットを表示します。文書グループがすでに存在している必要があります。

デフォルトで:デフォルトのインデックスグループとして指定されたファイルを作成します。

PAD_INDEX = {ON | OFF}は:インデックスが充填されているかどうかを指定します。デフォルトはOFFです。

  ON空き領域の指定された割合によってfillfactorの中間レベルのインデックス・ページに適用されます。

  OFF又はフィルファクタを考慮ページの中間段階でキーセットを取って、中間レベルのページは、その容量に近い充填する、指定されていないことが最大の行インデックスで保持できるように、範囲は十分な空間を残します。

  ときFILLFACTOR便利PAD_INDEXがFILLFACTORで指定されたパーセンテージを使用しているためPAD_INDEXオプションのみが指定されています。

FILLFACTOR =フィルファクタ:インデックスを作成する指定されたパーセンテージ、インデックス・ページのサイズ、1〜100のFILLFACTOR値を表す各インデックスページデータ。

SORT_IN_TEMPDB = {ON | OFF}:保存された指定されたインデックスのtempdbデータベースを作成するときに用いられる中間ソート結果。デフォルトはOFFです。

  中間ソート結果をtempdbのON生成するためのインデックスに格納されています。これは、インデックスが異なるディスクセットのtempdbとユーザデータベース内にある場合にのみ作成するのに必要な時間を減らすことができます。 

  OFFインデックス中間ソート結果は、同じデータベースに格納されています。

IGNORE_DUP_KEYは= {ON | OFF}は:挿入操作は、重複キーを挿入しようと指定したときに一意のインデックスにエラー応答。デフォルトはOFFです。

  重複したキーが一意のインデックスに挿入されたときに、警告メッセージに表示されます。一意性制約に違反する行のみが失敗します。

  OFF重複キーが一意のインデックスに挿入されたエラーメッセージ。INSERT操作全体がロールバックされます。

STATISTICS_NORECOMPUTE = {ON | OFF}は:統計的指標を自動的に再計算期限切れかどうかを指定するために使用されます。デフォルトはOFFです。

  ONが自動的に古くなった統計を再計算しません。

  OFF統計の自動更新機能を有効にします。

DROP_EXISTING = {ON | OFF}は:インデックスがまだテーブルに脱落し、新しいものを作成する場合を示しています。デフォルトはOFFです。

  あなたにパラメータindex_nameのと同じ名前を持つ必要があり、既存のインデックスを削除して再構築したいです。

  OFF既存のインデックスを削除し、再構築しないように指定します。指定されたインデックス名が既に存在する場合、SQL Serverはエラーを表示します。

{ON | OFF} ONLINE =表ロックするかどうか、すなわち、インデックス作成のための通常のアクセスを許可するか否かを示します。デフォルトはOFFです。

  それが力に表には、一般的なアクセスのために有効のままであり、任意のインデックスを作成し、/テーブルロックを使用してからユーザーを防ぐことはできません。

  インデックステーブルのOFF操作は、テーブルへの完全かつ効率的なアクセスのために、テーブルをロックします。

例:

ユニークなクラスタ化インデックスを作成します。

- 上の一意のクラスタ化インデックスの作成
クラスター化作成UNIQUEを         - ユニークなクラスタ化インデックス作成手段
インデックスUQ_Clu_StuNo         - 索引名
学生(S_StuNo)ON         - インデックスを確立するために、列名)テーブル名を
用いて
    PAD_INDEX = ON、 - 指示充填
    FILLFACTOR = 50、 - %は、50のフィルファクタを発現
    IGNORE_DUP_KEY = ON - インサート重複値が一意のインデックスに重複する値を無視表す
    statistics_norecompute = OFFは- 自動更新機能を有効にする統計情報を示します

ユニークな非クラスタ化インデックスを作成します。

- 上で一意の非クラスタ化インデックス作成
作成UNIQUE NONCLUSTEREDを         - ユニークな非クラスタ化インデックスの作成表す
指標UQ_NonClu_StuNo         - 索引名
学生(S_StuNo)ON         - テーブル名(索引付けされた列名)
    PAD_INDEX = ON、 - 発現を塗りつぶし使用
    FILLFACTOR = 50 - %は、50のフィルファクタ発現
    IGNORE_DUP_KEY = ONを- 挿入重複値を表す一意のインデックスに重複する値を無視
    statistics_norecompute = OFF - 自動更新機能を有効にするために統計情報を示す


 - クラスタ化インデックスを作成する
作成しますClu_Indexインデックスは、クラスタ化された
学生(S_StuNo)ON 
(DROP_EXISTINGで = ON)    

 - 非クラスタ化インデックスを作成します
非クラスタ化インデックスNonClu_Index作成する
学生(S_StuNo)上を
(DROP_EXISTINGで = 上)    

 - 创建唯一索引
一意のインデックスを作成NonClu_Index 
学生(S_StuNo)上
で(DROP_EXISTING =上)

PS:あなたは、クラスタ化と非クラスタ化を指定しない場合は、インデックスを作成し、デフォルトでは非クラスタです。

非クラスタ化複合インデックスを作成します。

- 非クラスタ化複合インデックスを作成して
、非クラスタ化インデックスのIndex_StuNo_SName作成
学生(S_StuNo、s_name)ON 
(DROP_EXISTING付き = ON)

 - 上の非クラスタ化複合インデックスを作成し、デフォルトなし非クラスタ化インデックス
作成インデックスIndex_StuNo_SName 
学生(S_StuNo、s_name)ON 
とし(DROP_EXISTING = ON)

:INCLUDE句でCREATE INDEX文を、あなたは、インデックスを作成するときに非キー列は、次の構文構造を(すなわち、カバーインデックス)に含ま定義することができます

非クラスタ化インデックスのインデックス名CREATE 
{テーブルON |}ビュー名(カラム名[ASC | DESC] [、...てN-])
は、( <1つのカラム名>、<名列2> [、... N-])


 - - カバーする非クラスタ化インデックス作成
作成する非クラスタ化インデックスNonClu_Index 
ON学生(S_StuNo)を
(s_name、S_Height)を含む
(DROP_EXISTINGと = ON)

 - 非クラスタ化インデックスの範囲、にはデフォルトの非クラスタ化インデックス作成
索引作成NonClu_Index 
ON学生(S_StuNo)を
(s_name、S_Height)を含む
(DROP_EXISTINGと = ON)

PS:あなたはクラスタ化インデックスを作成することはできません非キー列のインデックスが含まれています。

フィルターのインデックスを作成します。

- スクリーニング非クラスタ化インデックスを作成
非クラスタ化インデックスのIndex_StuNo_SName作成
学生(S_StuNo)ON 
WHERE S_StuNo > = 001とS_StuNo <= 020 
(DROP_EXISTINGで = ON)

 - 非クラスタ化インデックスのスクリーニングを作成し、デフォルト非クラスタ化インデックスは、
インデックスIndex_StuNo_SNameを作成していません
学生ON(S_StuNo)
WHERE S_StuNo > S_StuNo = 001 <= 020 
を有する(DROP_EXISTING = ON)

インデックスを変更します。

- 指数構文変更
ALTER INDEX {インデックス名 | ALL} 
ON <表|ビュー名> 
{REBUILD   | DISABLE |} REORGANIZE [。]

REBUILD:指定されたインデックスを再構築することを示しています。

DISABLE:指定されたインデックスが無効としてマークされることを示します。

REORGANIZE:指定されたインデックスのリーフレベルが再編成されることを示します。

- と呼ばれるNonClu_Indexインデックスを無効にする
学生無効にインデックスNonClu_Indexを変更

削除、およびインデックスを表示します。

- テーブル学生に指定されたインデックスをチェック
Execのsp_helpindexは学生を    

 - Index_StuNo_SNameという名前の指定したテーブルの学生のためのインデックスを削除
ドロップインデックスStudent.Index_StuNo_SName

 - チェックリスト学生UQ_S_StuNoインデックスの断片化情報
DBCC SHOWCONTIG(学生、UQ_S_StuNo)

 - 仕上げテストデータベーステーブル学生破片UQ_S_StuNoインデックス
のDBCC INDEXDEFRAG(テスト、学生、UQ_S_StuNo)

 - インデックステーブルのすべてが更新された学生の統計
統計の更新の学生

インデックスが定義された原則であります:

頻繁に更新テーブルあまりにも多くのインデックス、できるだけ列のインデックスを避けてください。フィールドは、多くの場合、インデックスを作成する必要があるクエリが、不必要なフィールドを追加することを避けるために使用されますが。

多くの場合、カラム内の複数の異なる値にインデックスを構築するために使用される条件式では、カラム内の少数の異なる値に索引付けされません。

カラムは、これらの列に複合インデックスを作成することができ、複数のソートする場合、並べ替えまたはグループ(つまり、ORDER BY操作BYまたはグループ)に列インデックスで頻繁。

各索引ページはのような多くのキーとポインタインデックスを収容できるように、キーのデータ・タイプのような小さなカラムと同様に、インデックスキーを選択する際に、このようにして、クエリが最小化するために必要なインデックスページを横断することができ加えて、整数のキーを使用して可能な限り最速の整数へのアクセスので。

参考:

https://www.cnblogs.com/Brambling/p/6754993.html

http://www.cnblogs.com/knowledgesea/p/3672099.html

https://msdn.microsoft.com/zh-cn/library/ms188783.aspx

おすすめ

転載: www.cnblogs.com/kkxwze/p/11307945.html