Naprosto nesmyslné omezení, pokud vidím. Za předpokladu standardní FixedVar
formát (na rozdíl od formátů používaných s kompresí řádků/stránek nebo řídkých sloupců) a za předpokladu, že mluvíte o varchar(1-8000)
sloupce
Všechny varchar
data jsou uložena na konci řádku v sekci s proměnnou délkou (nebo na offrow stránkách, pokud se nevejdou do řádku). Množství místa, které zabere v této sekci (a zda skončí mimo řádek) zcela závisí na délce skutečných dat, nikoli na deklaraci sloupce.
SQL Server použije délku deklarovanou v deklaraci sloupce při přidělování paměti (např. pro sort
operace). Předpoklad, který v tomto případě dělá, je, že varchar
sloupce budou vyplněny do 50 % jejich deklarované velikosti v průměru
takže by mohlo být lepší se na to při výběru velikosti podívat.