TEXT
і VarChar(MAX)
є великим типом даних символів змінної довжини Non-Unicode, який може зберігати максимум 2147483647 символів Non-Unicode (тобто максимальна ємність пам’яті: 2 ГБ).
Відповідно до посилання MSDN, Microsoft пропонує уникати використання типу даних Text, і він буде видалений у майбутніх версіях сервера Sql. Varchar (Max) - це запропонований тип даних для зберігання великих рядкових значень замість типу даних Text.
- In-Row або Out-of-Red Storage
Дані Text
стовпця типу зберігаються поза рядками на окремих сторінках даних LOB. Рядок на сторінці даних таблиці матиме лише 16-байтний вказівник на сторінку даних LOB, де є фактичні дані. У той час як Дані Varchar(max)
стовпця типу зберігаються в рядку, якщо він менше або дорівнює 8000 байт. Якщо значення стовпчика Varchar (max) перетинає 8000 байт, то значення стовпця Varchar (max) зберігається на окремих сторінках даних LOB, а рядок матиме лише 16-байтовий покажчик на сторінці даних LOB, де є фактичні дані. Тож In-Row
Варчар (Макс) хороший для пошуку та пошуку.
- Підтримувані / непідтримувані функції
Деякі з рядкових функцій, операторів чи конструкцій, які не працюють у стовпці Тип тексту, але вони працюють у стовпці типу VarChar (Max).
=
Дорівнює Оператору в стовпці типу VarChar (Max)
Згрупуйте за пунктом у колонці типу VarChar (Max)
- Міркування щодо системного вводу
Як ми знаємо, що значення стовпців типу VarChar (Max) зберігаються поза рядками, лише якщо довжина значення, яке потрібно зберегти в ньому, перевищує 8000 байт або в рядку недостатньо місця, інакше воно буде зберігатися це в ряд. Отже, якщо більшість значень, що зберігаються у стовпці VarChar (Max), є великими і зберігаються поза рядками, поведінка пошуку даних буде майже аналогічна тій, що у колонці типу Text.
Але якщо більшість значень, що зберігаються у стовпцях типу VarChar (Max), є досить малими для зберігання в рядку. Тоді для отримання даних, де стовпці LOB не включені, потрібна більша кількість сторінок даних для зчитування, оскільки значення стовпця LOB зберігається в рядку на тій самій сторінці даних, де зберігаються значення стовпців, які не є LOB. Але якщо запит вибору включає стовпчик LOB, тоді для пошуку даних потрібно менше кількості сторінок для читання, порівняно зі стовпцями типу Text.
Висновок
Використовуйте VarChar(MAX)
тип даних, а не TEXT
для хорошої продуктивності.
Джерело