我有一个如下表结构:
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
列是非聚集索引的良好候选者吗?或者它可能会降低性能?
答案 0 :(得分:0)
不 在VIN上声明索引绝对 会大幅降低性能。每次插入,删除或更新涉及VIN时,您都会受到轻微的性能影响。读取(特别是一旦你进入数百万条记录)将会更快地运行数量级。
至于BIGINT与INT,我通常会选择BIGINT。是的,它占用了更多的磁盘空间。是的,它占用了更多的内存。不过,对我来说,最好的一面是,我永远不必担心将表(以及将ID作为外键的所有其他表)迁移到BIGINT。到过那里。做完了。额外的空间是值得的。