如果另一列是varchar,char是否有用?

时间:2018-05-24 20:44:13

标签: sql sql-server sql-server-2016

如果一个表有一列可变长度,其他列中的任何增益都是固定长度的,或者它们的优势是否会被取消,因为行没有固定的长度,因此SQL应用程序不会被取消能够轻松计算出行的位置吗?

如果重要,我就会询问SQL Server。

编辑重复?哇。哇哇......

3 个答案:

答案 0 :(得分:3)

从解决记录的角度来看,它完全没有区别。不要担心SQL Server找到行的位置。数据库不假定行是具有固定长度项的数组。

相反,行存储在数据页上。数据页面有一个标题。标题具有页面上行的偏移量。找不到记录的位置,没有固定长度的乘法。

从技术上讲,行偏移不是标题的一部分,而是页脚的一部分。这是一个细微差别。 Here是对页面布局的良好描述。 documentation中还介绍了该主题。

答案 1 :(得分:0)

实施细节由数据库本身处理。您需要指定所需内容,SQL Server将适当地存储和检索它们。

不要担心。

答案 2 :(得分:0)

是的,如果您坚持CHAR列,将会有所收获。考虑页面拆分和碎片。由于VARCHAR列上的页面拆分,我看到主键有99%的碎片。