如果一个表有一列可变长度,其他列中的任何增益都是固定长度的,或者它们的优势是否会被取消,因为行没有固定的长度,因此SQL应用程序不会被取消能够轻松计算出行的位置吗?
如果重要,我就会询问SQL Server。
编辑:重复?哇。哇哇......
答案 0 :(得分:3)
从解决记录的角度来看,它完全没有区别。不要担心SQL Server找到行的位置。数据库不假定行是具有固定长度项的数组。
相反,行存储在数据页上。数据页面有一个标题。标题具有页面上行的偏移量。找不到记录的位置,没有固定长度的乘法。
从技术上讲,行偏移不是标题的一部分,而是页脚的一部分。这是一个细微差别。 Here是对页面布局的良好描述。 documentation中还介绍了该主题。
答案 1 :(得分:0)
实施细节由数据库本身处理。您需要指定所需内容,SQL Server将适当地存储和检索它们。
不要担心。
答案 2 :(得分:0)
是的,如果您坚持CHAR
列,将会有所收获。考虑页面拆分和碎片。由于VARCHAR
列上的页面拆分,我看到主键有99%的碎片。