Col*_*ond 4 sql-server indexing clustered-index
如果我在SQL Server数据库上使用nvarchar(n)列作为聚簇索引,那么与数字(int)索引相比,我是否会遭受重大的性能损失?另外复合指数的表现如何比较?
Sql并不关心你的索引是否是数字,但是你需要考虑一些事情,这取决于列中的内容以及你如何使用表.
通常,您希望保持索引尽可能小,因此nvarchar(4000)(最多8000字节)确实很糟糕,但varchar(3)(最多3个字节)将小于int(4个字节).您还希望(在可能的情况下)将索引插入插入到索引的末尾,这样可以防止索引碎片化并导致性能问题.
如果针对表运行的查询仅包含索引中的列,则复合索引可以极大地提高性能.这意味着当索引满足查询时,甚至不会触及实际表.
有关索引的概述,请参阅Sql server索引基础知识.
如果您提供有关表本身以及您希望如何使用它的更多具体细节,可能会更有帮助?