如果我創建一個每頁超過8060字節的SQL Server表,對於超出此限制的列,查詢是否會受到相當大的傷害?在SQL Server中,每行超過8060字節會對性能產生什麼影響?
我也不太明白,如果一行佔用整個8060字節,即使它是空的。在這種情況下,查詢性能是否會影響超過限制的特定行或所有行?
如果我創建一個每頁超過8060字節的SQL Server表,對於超出此限制的列,查詢是否會受到相當大的傷害?在SQL Server中,每行超過8060字節會對性能產生什麼影響?
我也不太明白,如果一行佔用整個8060字節,即使它是空的。在這種情況下,查詢性能是否會影響超過限制的特定行或所有行?
對於第一個問題:
是的,它可能會影響性能。在一個表中結合使用varchar,nvarchar,sql_variant和varbinary,總大小大於8,060字節會導致將數據重新分配到另一個頁面。 儘管這會影響更新,但我不確定讀取數據是否太重要。在內部,SQL Server把一個指針指向新頁面中重新分配的數據部分,所以我猜這是非常快的操作。
由您(DBA /開發人員)來分析和預測表中這些行的百分比。如果過於頻繁,請考慮將大型列移動到單獨的表格中。 使用sys.dm_db_index_physical_stats來查明數據發生了什麼。
第二個問題:
我想你問的情況,當一些列(尤其是VARCHAR)是空的。你可以「幫助」SQL Server來節省空間使用sparse columns 另外,我建議this文章。
我們做了一些測試,你是完全正確的。謝謝。 –