問題タブ [non-clustered-index]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
sql - クエリにインデックスがあるのにクラスター化インデックス スキャンが実行されるのはなぜですか
私は SQL Server 2012 のトレーニング ブックからサンプル データベースを実行しており、インデックスについて少し学んでいるので、それがどのように機能するかを試してみようと思いました。
テーブル Orders には shippostalcode のインデックスがあるので、それを where 句に入れようとしました。そのテーブルには 850 以上のレコードがあることがわかっており、このコードは次のように分割されています。
では、これを行うと、クラスター化されたインデックス スキャンが得られるのはなぜですか?
編集:
やった :
これにより、インデックスシークが行われました。SQL Server は、残りの列のブックマーク ルックアップを実行するよりもスキャンの方が高速であると考える可能性があるのではないでしょうか?
編集2:
ここで転換点について読んだ後: http://www.sqlskills.com/blogs/kimberly/why-arent-those-nonclustered-indexes-being-used/
約30%と言われています。ここからクエリを使用して、テーブルの合計ページを取得しました。
49 が使用済みで、53 が予約済みです。したがって、49 の 30% = 14.7 * 17 (各ページにこれだけ格納されます) は約 250 行です。しかし、私のクエリは 9 しか返さなかったので、転換点の近くにはありませんでした。
sql-server - パフォーマンスを向上させるには、テーブルにインデックスが必要です
以下のクエリで長時間の DateTime を指定すると、タイムアウトの問題が発生しました (クエリは c# アプリケーションから実行されます)。テーブルには、ID に非クラスター化インデックス (主キーではない) を持つ 3,000 万行がありました。
主キーがないことがわかったので、最近IDを主キーとして更新しましたが、タイムアウトになりません。以下のクエリで将来のために複数のキーにインデックスを作成し、このテーブルから非クラスター化インデックスを削除して複数の列に作成する場合、誰でも助けてもらえますか? データは急速に増加しており、パフォーマンスの改善が必要です
これは作成スクリプトです
sql-server - 複数の列を持つ SQL Server 非クラスター化インデックス
私はまっすぐな答えを見つけることができないようです。次の列があります。
ZipCode
単独またはStateAbbreviation/CountyName
組み合わせてテーブルをクエリします。PKId
列が定義されているので、これがクラスター化インデックスです。
より良いパフォーマンス/効率を達成するための推奨されるアプローチは何ですか? テーブルの検索方法を考慮して、どのような種類のインデックスを作成する必要がありますか?