如果我创建一个每页超过8060字节的SQL Server表,对于超出此限制的列,查询是否会受到相当大的影响?
如果一行占用整个8060字节,即使它是空的,我也不太明白..如果它是真的,查询性能是否会受到超出限制的特定行或所有行的影响?
答案 0 :(得分:1)
对于第一个问题:
是的,它可能会影响性能。在一个表中具有varchar,nvarchar,sql_variant和varbinary的组合,总大小大于8,060字节会导致将重新分配数据重新分配到另一个页面。 虽然这会影响更新,但我不确定它对于读取数据是否过于重要。在内部,SQL Server在新页面中放置了指向重新分配的数据部分的指针,因此我猜它的运行速度非常快。
由您(DBA /开发人员)来分析和预测表中此类行的百分比。如果它经常发生,请考虑将大列移动到单独的表中。 使用sys.dm_db_index_physical_stats查看您的数据发生了什么。
第二个问题:
我想你在某些列(尤其是varchar)为空时询问了情况。你可以帮助"使用sparse columns节省空间的SQL Server 另外,我建议this文章。