Базы данных сильно озабочены производительностью - скоростью и минимизацией хранилища. В большинстве других частей компьютерного мира вас не будет беспокоить количество символов в вашей строке символов; это может быть один, это может быть все содержание энциклопедии; это всего лишь строка. На самом деле, многие языки даже не беспокоятся о том, является ли это строкой или числом.
Но по мере того, как компьютеры работают быстрее и получают больше памяти, люди помещают больше данных в свои базы данных и выполняют более сложные запросы. Для базы данных ЦП и память сегодня столь же ограничены, как и во времена 64КБ основной памяти и 10МБ жестких дисков (на мэйнфреймах ).
С фиксированным числом байтов гораздо проще работать, чем с переменной длиной. С 10 байтами гораздо легче справиться, чем с 1 000 000. Итак, ваша база данных хочет, чтобы вы дали ей подсказку, чтобы она могла дать вам гигабайт результатов из террабайтов данных в микросекундах. Если вы не используете свою базу данных так сильно, вам не понадобится скорость, которую она предлагает, и вы будете раздражены ненужными вопросами. Но если вам нужно представление, вы будете рады дать ему несколько советов.
Как отмечено в других ответах, используйте, char
если оно всегда использует определенное количество символов, varchar
если длина может варьироваться, но она не становится слишком большой (я предполагаю, что большинство БД обрабатывают ее как char
или в text
зависимости от размера), и text
если она может быть любой длины. Если ваш SQL пытается использовать text
столбец, возможно, было бы лучше как-то суммировать его и поместить в столбец char
или в небольшой varchar
столбец, а затем сделать where
«и order by
». Конечно, это только если производительность важна для вас.
text
является устаревшим. Есть также соображения об использовании, которые связаны с тем, где хранятся данные и каким образом к ним осуществляется доступ.