Бази даних сильно переймаються швидкістю продуктивності та мінімізацією пам’яті. У більшості інших частин комп'ютерного світу ви не будете турбуватися про те, скільки символів у вашій рядку символів; це може бути одна, це може бути весь зміст енциклопедії; це все лише рядок. Насправді багато мов навіть не турбують вас про те, чи це рядок чи число.
Але оскільки комп’ютери стають швидшими і отримують більше пам’яті, люди вкладають більше даних у свої бази даних і роблять більш химерні запити. Для процесора та пам'яті бази даних настільки ж обмежують сьогодні, як і в часи основної пам’яті 64 Кб та жорстких дисків 10 Мб (на мейнфреймі комп'ютерів).
Фіксовану кількість байтів набагато простіше впоратися, ніж число зі змінною довжиною. З 10 байтами набагато простіше справитися, ніж з 1 000 000. Таким чином, ваша база даних хоче, щоб ви дали їй підказку, щоб вона могла дати вам гігабайт результатів від терабайт даних в мікросекундах. Якщо ви не використовуєте свою базу даних так важко, вам не знадобиться швидкість, яку вона пропонує, і будете роздратовані непотрібними питаннями. Але якщо вам потрібен виступ, ви будете раді дати йому підказки.
Як зазначається в інших відповідях, використовуйте, char
якщо в ньому завжди використовується певна кількість символів, varchar
якщо довжина може змінюватися, але вона не надто велика (я думаю , більшість БД трактують це як char
або text
залежно від розміру), і text
якщо він може бути будь-якої довжини. Якщо ваш SQL намагається використовувати text
стовпчик, можливо, найкраще його якось узагальнити і помістити в char
невеликий varchar
стовпчик, а потім виконайте where
з цим і order by
і. Звичайно, це лише в тому випадку, якщо для вас важлива продуктивність.
text
є застарілим. Існують також міркування щодо використання, пов’язані з тим, де зберігаються дані та яким чином вони отримують доступ до них.