0

32,589 行のテーブルがあり、列の 1 つは「場所」と呼ばれ、Varchar(40)列タイプです。列には、実際には郊外である場所がすべて大文字のテキストで保持されます。

このテーブルを使用する関数は、次のことを行います。

IF EXISTS(SELECT * FROM MyTable WHERE Location = 'A Suburb')
...

効率のために、この列にインデックスを追加することは有益でしょうか? これはどちらかというと読み取り専用のテーブルであるため、保守以外の編集や挿入はあまりありません。

4

3 に答える 3

3

インデックスがない場合、SQL Server はテーブル スキャンを実行して、探している場所の最初のインスタンスを見つける必要があります。運が良ければ、値が最初の数行の 1 つにあるかもしれませんが、32,000 行にある可能性があり、これは時間の無駄です。インデックスの追加には数秒しかかからず、パフォーマンスが大幅に向上する可能性があります。

于 2013-11-04T23:13:56.940 に答える
0

@Brian Shamblenの回答に同意します。また、インナーセレクトでTOP1を使ってみてください

IF EXISTS(SELECT TOP 1 * FROM MyTable WHERE Location = 'A Suburb')

の条件に一致するすべてのレコードを選択する必要はありませんEXISTS。1 つあれば十分です。

于 2013-11-04T23:15:40.517 に答える