【发布时间】:2011-09-30 00:25:30
【问题描述】:
我们在生产中遇到了一些严重的表锁定问题。我注意到我创建了一个存储过程,它按订单号获取订单列表。订单号是 VARCHAR(150)。此列上没有任何类型的索引。
目前,此列中有很多 NULL 值。但是,随着时间的推移(此表最近上线),该表将显着增长。这次不会再添加 NULL 值了。
我的问题有两个。首先,索引在这里是否有益。 proc被大量使用。如果是这样,它是否应该集群?数据是 CP123456、DR126512 之类的东西。
可能会影响第一个问题的第二个问题是 - 将列更改为 CHAR(10) 是否有益,因为订单号“似乎”总是相同的大小。与 VARCHAR(150) 相比,将索引放在固定长度的 CHAR 上是否有任何速度优势?
(大小不同是因为创建列时需求未知)。
SQL Server 2008。
【问题讨论】:
标签: sql performance sql-server-2008