【发布时间】:2013-11-27 00:13:24
【问题描述】:
我有一个如下表结构:
功能列表
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 列是否适合非聚集索引?或者它可能会降低性能?
【问题讨论】:
-
为什么 PK 是 BIGINT?你真的要在这张表中拥有超过 20 亿个特征吗?无论如何,在不了解您的系统的其他信息以及额外/更广泛的索引如何影响您的整体工作负载的情况下,将 VIN 集群化可能更有意义。然后至少不需要查找来获取 SELECT * 查询中的其他列...
-
左大灯,右大灯,左前轮,右前轮……是的,你完全可以在汽车上获得超过 2B 的功能
-
不在这个阶段....目前我可以看到它增长到.. 5 到 1000 万条记录..但是将其声明为 BIGINT 有什么害处吗?
-
@billinkc - 你完全明白了我 :)
-
NCI 的价值值得怀疑(推迟到 AB 或其他人),因为即使引擎寻找到该位置,它仍然需要进行密钥查找才能进入物理索引以获取其余部分选择的数据。如果您没有
SELECT *,那么也许 NCI 适合您。
标签: sql performance sql-server-2008 indexing non-clustered-index