最近、私はデータベースの微調整に入りました。私はSQL Serverに関するいくつかのアイデアを持ち、いくつかのインデックスを作成することに決めました。インデックスを作成するSQL Server 2008
は
このhttp://sqlserverplanet.com/ddl/create-indexを呼ばしかし、私は助けるどのように他のINCLUDE
、WITH
オプションのようなインデックスの種類を理解していません。私はgoogleに試みたが、それらを使うときには簡単な説明を見落とした。
CREATE NONCLUSTERED INDEX IX_NC_PresidentNumber
ON dbo.Presidents (PresidentNumber)
INCLUDE (President,YearsInOffice,RatingPoints)
WHERE ElectoralVotes IS NOT NULL
CREATE NONCLUSTERED INDEX IX_NC_PresidentNumber
ON dbo.Presidents (PresidentNumber)
WITH (DATA_COMPRESSION = ROW)
CREATE NONCLUSTERED INDEX IX_NC_PresidentNumber
ON dbo.Presidents (PresidentNumber)
WITH (DATA_COMPRESSION = PAGE)
私は上記を使用する必要がありますか?彼らはパフォーマンスを向上させるでしょうか?
ここでサンプルクエリを追加してください。それは簡単に考えて理解するのに役立ちます:) – Billa
うまく見えます。だから我々は良いパフォーマンスを得るためにSELECT文のすべての列にIndexを追加する必要がありますか?テーブルスキャンを回避する。 – Billa
いいえ、テーブルスキャンを避けるために、すべての列をインデックスに追加する必要はありません。表のスキャンを避けるために、where句で使用する列に索引を付ける必要があります。索引に行へのポインタが含まれているため、索引内のすべての列を持つことによるパフォーマンスの向上は比較的小さいです。大きな利得は、フィルタ列にインデックスを持つことです。 – BlackICE