8

I have a table in which I have created a clustered index in one of the column of type INT. I wanted to create a nonclustered index to increase the performance of the query. However, I do not have any column of type int.

I therefore thought of creating a nonclustered index on a varchar type column.

Will it be good to create an index on a column of type Varchar? Will it help improving the performance of a query? I know it is not a good thing to create an index on a varchar type column, but just wanted to know if it will improve query performance.

4

1 に答える 1

15

VARCHAR 列または一連の列にインデックスを作成することに何の問題もありません。

VARCHAR/INT のパフォーマンスに関しては、RDBMS のすべてと同様に、何をしているかによって異なります。あなたが考えているのは、VARCHAR キーでテーブルをクラスタリングすることは (SQL Server では) 単調に増加する数値キーでクラスタリングするよりもわずかに効率が悪く、断片化を引き起こす可能性があるという事実です。

または、VARCHAR 列に JOIN を記述することについて聞いたことがあるかもしれません。確かに、数値型の JOIN よりも効率が少し劣りますが、効率が少し劣るだけであり、決してvarchar 列に参加します。

これは、VARCHAR 列にインデックスを作成してはならないという意味ではありません。VARCHAR 列に必要なインデックスは、多くの場合、桁違いにクエリのパフォーマンスを向上させます。VARCHAR にインデックスが必要な場合は、作成します。インデックスを作成するために整数列を見つけようとしても意味がありません。エンジンはそれを使用しません。

于 2012-12-26T14:05:18.640 に答える