8

我有一个表,我在其中一个类型的列中创建了一个聚集索引INT。我想创建一个非聚集索引来提高查询的性能。但是,我没有任何类型的列int

varchar因此,我想到了在类型列上创建一个非聚集索引。

在 type 的列上创建索引会很好Varchar吗?它是否有助于提高查询的性能?我知道在类型列上创建索引不是一件好事varchar,但只是想知道它是否会提高查询性能。

4

1 回答 1

15

在 VARCHAR 列或列集上创建索引没有任何问题。

关于 VARCHAR/INT 的性能,与 RDBMS 中的所有内容一样,这取决于您在做什么。您可能会想到这样一个事实,即在 VARCHAR 键上对表进行集群(在 SQL Server 中)比在单调递增的数字键上集群效率略低,并且可能会引入碎片。

或者您可能正在考虑您听说过的关于在 VARCHAR 列上编写 JOIN 的内容 - 确实,它比在数字类型上的 JOIN 效率低一点,但它只是效率低一点,没有什么会导致您永远加入 varchar cols。

这并不意味着您不应该在 VARCHAR 列上创建索引。VARCHAR 列上所需的索引将提高查询性能,通常提高几个数量级。如果您需要 VARCHAR 上的索引,请创建它。试图找到一个整数列来创建索引是没有意义的——引擎永远不会使用它。

于 2012-12-26T14:05:18.640 回答