2016-07-12 7 views
1

2つのクエリを向上させようとしていましたが、これはインデックス作成とほぼ同じです。私は最初のクエリでテーブルスキャンを見て、それをインデックスシークにするためにインデックスを作成しました。私は2番目のクエリを見たとき、インデックスを作成するよう指示されたSQL Serverは、 SQL Server Engineがすでにインデックスを検索していることを計画します。SQL Serverの実行計画インデックスシーク

私の質問は次のとおりです。

SQL Serverの実行計画ならば、私はこのクエリのために別のインデックスを作成する必要があり、すでにインデックスは私が作成したインデックスを削除し、この他のものと交換するか、私は無視すべきである必要があり、追求されていますSQL Serverのアドバイス

+0

は、クエリ2ランをい最初のインデックスを追加した後に許容可能な速度で? – Simon

+0

@Simonはい、それは実行する –

答えて

2

具体的な詳細がなければ答えられません。これは推測ゲームではありません。正確なテーブル構造、テーブルサイズ、追加したインデックス、実行計画を投稿してください。

のインデックスをというインデックスに追加しても、のインデックス番号がに変更されたわけではありません。また、実行計画がインデックスシークを使用しているという事実は、計画がであることを意味しません。間違ったインデックス列の順序と部分的な述語の一致は、先頭の列の「シーク」として現れ、最適ではなくなり、SQLはより良いインデックス(つまり、正確に記述する現象)を推薦し続けます。

Understanding how SQL Server executes a queryHow to analyse SQL Server performanceをお読みください。

+0

私はただの原因が完全であることを意味するものではないことを知っていることを知っているが、私はもう少し良くなるために他のインデックスを作成する必要がありますか? –

0

は私が..最初のクエリでテーブルスキャンを見て、インデックスがすべてのスキャンは悪くない、良いものではありません

すべてがシークシークことを確認するために、インデックスを作成し

顧客が1000人の注文を持つ10人の顧客テーブルを持っているとします。注文テーブルの合計行は10000行になります。

各顧客のトップ1の注文を取得するには、

あなたはデータを理解し、なぜオプティマイザがこのプランを選択するのか、オプティマイザが必要なプランを選択する方法を理解する必要があります。Itzik Ben -GaNは素晴らしいexamples in this tutoriaリットルを与え、オーバーによるデータ密度、ランダム読み取りにシークシークし、一部をスキャンし、optimiserがスキャン選ぶことができる理由の詳細に入るにvideo on SQL Bits

さらにクレイグ・フリードマンが語っている

+0

ありがとう、あなたが投稿したリンクが表示されます。 –

関連する問題