W dawnych czasach używanie varchar
over char
było wielkim „nie”, ponieważ varchar
było przechowywane na innej stronie niż reszta wiersza. Czy nadal tak jest w przypadku SQL Server 2008? Czy zobaczę jakikolwiek wzrost pamięci / wydajności po zmianie 1-3 varchar(5)
kolumn na char(5)
kolumny w tabeli z
a) powiedz 2.000.000 wierszy b) jeśli którakolwiek z varchar
kolumn jest częścią indeksów / kluczy podstawowych
sql-server
sql-server-2008
Carlo V. Dango
źródło
źródło
Odpowiedzi:
Mylisz tekst / varchar (max) (typy LOB) z varchar (n) / char (n)
W przeciwnym razie, jeśli użyjesz char (1000), a nie varchar (1000), a średnia długość danych wynosi, powiedzmy, 42, jest to zły projekt i dużo zmarnowanej przestrzeni.
źródło
Trudno powiedzieć ci o konkretnych wzrostach wydajności lub trafieniach, nie wiedząc więcej o swoim schemacie, ale ogólnie chcesz zdefiniować typ danych, aby pasował do twoich danych. Jeśli potrzebujesz stałej szerokości (np. Wiesz, że zawsze będziesz miał pięć znaków), powinieneś użyć char (5). Jeśli masz zmienną ilość danych, powinieneś użyć varchar (5).
W przypadku SQL im więcej danych zmieścisz na stronie, tym lepsza wydajność.
źródło
O ile wiem, SQL Server nigdy nie przechowywał typów danych varchar lub nvarchar poza wierszem. Tekst i NText są różne. Istnieje kilka dodatkowych bitów, które są przechowywane dla kolumny o zmiennej szerokości, ale o to chodzi.
źródło