我有一个表,我在其中一个类型的列中创建了聚簇索引INT.我想创建一个非聚集索引来提高查询的性能.但是,我没有任何类型的列int.
因此,我想到在varchar类型列上创建非聚簇索引.
在类型列上创建索引是否合适Varchar?它有助于提高查询的性能吗?我知道在varchar类型列上创建索引并不是一件好事,但只是想知道它是否会提高查询性能.
小智 11
在VARCHAR列或列集上创建索引没有任何问题.
关于VARCHAR/INT的性能,与RDBMS中的所有内容一样,它取决于您正在做什么.您可能正在考虑的事实是,在VARCHAR键上聚类表(在SQL Server中)比在单调递增的数字键上聚类效率稍低,并且可能引入碎片.
或者您可能正在考虑在VARCHAR列上编写JOIN所听到的内容 - 确实如此,它比数字类型的JOIN效率低一点,但效率稍低,没有什么会导致您永远不会加入varchar cols.
这些都不意味着您不应该在VARCHAR列上创建索引.VARCHAR列上的所需索引将提高查询性能,通常为数量级.如果需要VARCHAR上的索引,请创建它.尝试找到一个整数列来创建索引是没有意义的 - 引擎永远不会使用它.