Швидкий вплив використання varchar у SQL Server 2008


9

У старі часи використання " varcharover" charбуло великим "no no", оскільки varcharфайл зберігався на іншій сторінці, ніж у решті рядків. Це все ще так є сьогодні з SQL Server 2008? Чи побачу я якийсь приріст пам'яті / продуктивності від зміни 1-3 varchar(5)стовпців до char(5)стовпців таблиці

а) скажіть 2.000.000 рядків б) якщо будь-який із varcharстовпців є частиною індексів / первинних ключів


2
Можливий дублікат питання Як занадто довгі поля (varchar / nvarchar) впливають на продуктивність та використання диска? (MSSQL Server 2008) . Якщо ви думаєте, що це не дублікат, то обов'язково знайдете і відповіді.
Мар’ян

Відповіді:


8

Ви плутаєте текст / varchar (max) (типи LOB) з varchar (n) / char (n)

В іншому випадку, якщо ви використовуєте char (1000), а не varchar (1000), а середня довжина даних, скажімо, 42, це поганий дизайн та багато марного місця.


під DB2 та деякими іншими двигунами DB char та varchar зберігалися по-різному, а деякі поради щодо DB2 передавались на SQL Server.
Ендрю Бікертон

@Andrew Bickerton: ще один міф ...
gbn

чи можете ви вказати мене в напрямку, де розвінчався цей міф? (Я згоден, що поради не стосуються SQL Server)
Ендрю Бікертон,

Я також маю на увазі одну з оригінальних версій DB2 (мабуть, не так було протягом останніх 10 років), аналогічну пораді в SQL 2000, що ПК має бути некластеризованим через проблеми з продуктивністю, які все ще існують - хоча більше не правда
Ендрю Бікертон

@Andrew Bickerton: просто подивіться на дискові структури SQL Server (декілька відповідей ТАК) stackoverflow.com/search?q=user%3A27535+anatomy . Вибачте за пізню відповідь
gbn

3

Важко розповісти про конкретні підвищення продуктивності або хіти, не знаючи більше про вашу схему, але в цілому ви хочете визначити тип даних відповідно до ваших даних. Якщо у вас є потреба у фіксованій ширині (наприклад, ви знаєте, що у вас завжди буде п'ять символів), тоді ви повинні використовувати char (5). Якщо у вас є змінна кількість даних, то вам слід використовувати varchar (5).

Для SQL, чим більше даних можна розмістити на сторінці, тим краще буде ваша ефективність.


3

Наскільки я знаю, SQL Server ніколи не зберігав типи даних varchar або nvarchar поза рядками. Текст і NText різні. Є кілька зайвих бітів, які зберігаються в стовпчику змінної ширини, але це стосується цього.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.