Cra*_*aig 6 sql performance sql-server-2008
我们在生产中遇到了一些沉重的表锁定问题.我注意到我创建了一个存储过程,它按订单号获取订单列表.订单号是VARCHAR(150).此列上没有任何类型的索引.
目前,此列中有很多NULL值.但是,随着时间的推移(该表最近上线),该表将显着增长.此时不会再添加NULL值.
我的问题是双重的.首先,指数在这里是否有益.proc被大量使用.如果是这样,它应该聚集在一起吗?数据类似于CP123456,DR126512.
第二个问题,可能影响第一个问题是 - 将列更改为CHAR(10)是有益的,因为它似乎'订单号始终是相同的大小.将索引放在固定长度的CHAR上是否有任何速度优势,而不是VARCHAR(150)?
(大小不同是因为创建列时未知的要求).
SQL Server 2008.
是的,一点没错!继续前进并添加索引.这里可能不需要对索引进行聚类,如果您已经在表上有另一个聚簇索引(例如主键),则无论如何都不可能.
将列更改为a CHAR(10)可能在存储大小方面具有一些优势,但它不太可能在索引性能方面产生特别大的差异.我现在就跳过它.