我总是使用适当长度的varchar字段为我希望包含在其中的数据设计我的表。我通常也将我的键定义为INT类型并将它们用于JOINS等,因为它总是给我最好的性能。
我必须处理一个现有的项目,其中很多关键列都是varchars,因此这些字段上有很多索引,这本身并不是问题。但是,有几个实例将这些列定义为varchar(255),而例如varchar(10)实际上对列中包含的数据做得很好。 (懒惰,或者表格最初是通过导入创建的(见上文 - 懒惰!)
我的理由一直是具有适当大小的列,意味着SQL Server将在索引更紧密时表现更好,并且更有可能执行计划将更加优化,并且实际查询执行将更具内存效率。这更多地基于直觉,而不是任何具体的东西,并试图找到书面证据,以允许我的建议改变表格,以适当大小的列没有出现任何我很乐意待命的东西。
我说错了吗?如果是这样,任何人都可以指出一些有证据的证据吗?