我们有一个索引列(ModelName),它在表中非常重要,非常类似于“目录编号”,但它不是PK。
大量的ORDER by ModelName;WHERE ModelName等正在被使用。
该列最初以NVarchar(50)开始,但后来更改为100,现在需要为255。
我在"NVarchar(MAX) vs. NVarChar(N)"上找到了很多帖子,但我无法得到一个结论性的答案:
在使用NVarchar(255)而不是NVarchar(100)而不是NVarchar(50)时,是否有任何/重要的性能影响,特别是对于索引
就性能而言,较短的列大小(50)是否优于较长的(255)?是否可以为这样的索引设置一个特殊的设置来提高性能?
以下是@a_horse_with_no_name在评论中提供的另一个参考:
Best practices for SQL varchar column length
注:Ariel的回答:https://stackoverflow.com/a/8295195/1140885
上面写着:
“具体来说,在进行排序时,较大的列占用了更多的空间,所以如果这会影响性能,那么您就需要担心它,并使它们变小。”
,在评论中:
索引也有问题和限制需要考虑。当四列都是VARCHAR(255)时,不能有a (a,b,c,d)索引。
没有明确的结论/参考文档等。
发布于 2014-04-02 02:42:58
在可变长度的数据类型上,如果不断积累数据,索引将受到影响。大小越大,B树中组合的机会就越大,从而有效地增加索引大小。在某个时候,索引大小会太大,查询也会受到影响。另一方面,如果您拥有与ModelName类似的数据集,那么就不会有太多问题。
如果模型名像AAABB、AAABC、AAACC等,它不会扼杀您的性能,但是彼此之间的标准差会变得很高,而索引性能会因为大小而变差。
https://stackoverflow.com/questions/21310243
复制相似问题