Действительно ли менее эффективно использовать ТЕКСТ, чем varchar в базе данных SQL?
Раз так, почему?
Если не, почему Вы только всегда не использовали бы ТЕКСТ?
Я не нацелен на определенную базу данных здесь, но оракул является, вероятно, самым релевантным, хотя я тестирую на MySQL в настоящее время как часть подтверждения концепции.
От Microsoft здесь
ntext, текст и типы данных image будут удалены в будущей версии Microsoft SQL Server. Избегайте использования этих типов данных в работе новой разработки и запланируйте изменить приложения, которые в настоящее время используют их. Используйте nvarchar (макс.), varchar (макс.), и varbinary (макс.) вместо этого.
Когда Вы используете varchar(max)
по тексту можно использовать его в WHERE
пункт, потому что они работают то же своими меньшими дубликатами, varchar,nvarchar and varbinary
. Ниже маленький список того, что должно использоваться, как отклонено, что должно было использоваться:
В документации PostgreSQL говорится:
Подсказка: нет никаких различий в производительности между этими тремя типами кроме увеличенного размера ресурса хранения при использовании дополненного пробелом типа и нескольких дополнительных циклов для проверки длины при хранении в ограниченный длиной столбец. В то время как символ (n) имеет преимущества производительности в некоторых других системах баз данных, он не имеет таких преимуществ в PostgreSQL. В большей части текста ситуаций или символьного варьирования должен использоваться вместо этого.
Короткий ответ: Да, они менее эффективны.
Дольше, более замысловатый ответ:
Да, они, вероятно, менее эффективны. Это зависит, на котором DBMS Вы используете и размер Вашей таблицы, и т.д., и т.д. Текстовые поля являются переменной шириной, и как таковой, DBMS должен сделать больше работы при попытке найти записи. То, на какое количество это влияет на Вашу производительность, прямо пропорционально к тому, насколько эффективный Ваш DBMS в целом, сколько данных это хранит о строках таблицы, и оптимизирует ли это таблицы фиксированной длины.
Я знаю, что MySQL работает быстрее со строками таблицы фиксированной длины, но необходимо сказать ему, что таблица может рассматриваться как таблицу фиксированной длины сначала. У меня действительно нет практического опыта с другим DBMS, чтобы смочь связать фактические числа. Но на таблицах с партиями (читает миллион или больше) записей, это может иметь значительное значение. Меньшие таблицы будут иметь мало ни к какому практическому различию все же.
Необходимо быть конкретными, о которой базе данных Вы говорите о. Я верю по крайней мере в некоторые базы данных, ТЕКСТ хранится как CLOB, отдельный от самой таблицы (который просто содержит ссылку). Это приводит к таблице, являющейся меньшей (пользой), но дополнительным поиском и вероятно неудачным обращением в кэш при выборке (плохо).
Там, вероятно, индексируют и запрашивают последствия также, но снова это будет зависеть от конкретного RDBMS, который Вы используете.