非聚集指数的候选人

时间:2013-11-14 05:04:00

标签: sql performance sql-server-2008 indexing non-clustered-index

我有一个如下表结构:

FeatureList

ID  - BIGINT - Primary Key  - Clustered Index
VIN - VARCHAR(50)
Text - VARCHAR(50)
Value - VARCHAR(50)

我在此执行的大部分查询都是:

SELECT * FROM FeatureList WHERE VIN = 'ABCD'    --- Will give multiple records

OR 

DELETE FROM FeatureList WHERE VIN = 'ABCD'

我想知道,VIN列是非聚集索引的良好候选者吗?或者它可能会降低性能?

1 个答案:

答案 0 :(得分:0)

在VIN上声明索引绝对 会大幅降低性能。每次插入,删除或更新涉及VIN时,您都会受到轻微的性能影响。读取(特别是一旦你进入数百万条记录)将会更快地运行数量级。

至于BIGINT与INT,我通常会选择BIGINT。是的,它占用了更多的磁盘空间。是的,它占用了更多的内存。不过,对我来说,最好的一面是,我永远不必担心将表(以及将ID作为外键的所有其他表)迁移到BIGINT。到过那里。做完了。额外的空间是值得的。