Całkowicie bezcelowe ograniczenie, o ile widzę. Zakładając standardowe FixedVar
format (w przeciwieństwie do formatów używanych z kompresją wierszy/stron lub rzadkimi kolumnami) i zakładając, że mówisz o varchar(1-8000)
kolumny
Wszystkie varchar
dane są przechowywane na końcu wiersza w sekcji o zmiennej długości (lub na stronach offrow, jeśli nie mieszczą się w wierszu). Ilość miejsca, jaką zajmuje w tej sekcji (i to, czy kończy się ona na wierszu, czy nie) jest całkowicie zależna od długości rzeczywistych danych, a nie deklaracji kolumny.
SQL Server użyje długości zadeklarowanej w deklaracji kolumny podczas przydzielania pamięci (np. dla sort
operacje). Założenie, jakie przyjmuje w tym przypadku, jest takie, że varchar
kolumny będą wypełnione do Średnio 50% ich deklarowanego rozmiaru
więc może to być lepsza rzecz do rozważenia przy wyborze rozmiaru.