Базы данных: Являются ли поля "TEXT" менее эффективными, чем "varchar"? - PullRequest
9 голосов
/ 16 октября 2008

Менее эффективно использовать TEXT, чем varchar в базе данных SQL?

Если так, то почему?

Если нет, то почему бы вам не всегда использовать ТЕКСТ?

Я не нацеливаюсь здесь на конкретную базу данных, но, возможно, наиболее актуальным является oracle, хотя в настоящее время я тестирую MySQL как часть доказательства концепции.

Ответы [ 4 ]

4 голосов
/ 16 октября 2008

От Microsoft здесь

типы данных ntext, text и image будут быть удаленным в будущей версии Microsoft SQL Server. Избегать использования эти типы данных в новой разработке работать и планировать модифицировать приложения которые в настоящее время используют их. использование nvarchar (max), varchar (max) и вместо varbinary (max).

Когда вы используете varchar(max) поверх текста, вы можете использовать его в предложении WHERE, поскольку они работают так же, как и их меньшие аналоги, varchar,nvarchar and varbinary. Ниже приведен небольшой список того, что следует использовать, а не то, что нужно было использовать:

  • Использовать varchar (max) вместо текста
  • Используйте nvarchar (max) вместо ntext
  • Использовать varbinary (max) вместо изображения
2 голосов
/ 16 октября 2008

В документации PostgreSQL написано :

Подсказка: между этими тремя типами нет различий в производительности, за исключением увеличенного размера хранилища при использовании типа с пробелом и нескольких дополнительных циклов для проверки длины при сохранении в столбце с ограниченной длиной. Хотя символ (n) имеет преимущества в производительности в некоторых других системах баз данных, он не имеет таких преимуществ в PostgreSQL. В большинстве случаев вместо текста следует использовать изменяющийся текст или символ.

1 голос
/ 16 октября 2008

Вы должны точно указать, о какой базе данных вы говорите. Я полагаю, что по крайней мере в некоторых базах данных TEXT хранится в виде CLOB отдельно от самой таблицы (которая просто содержит ссылку). Это приводит к тому, что таблица становится меньше (хорошо), но при поиске (плохо) происходит дополнительный поиск и, возможно, отсутствие кэша.

Вероятно, также есть последствия для индексации и запросов, но опять же, это будет зависеть от конкретной используемой вами СУБД.

1 голос
/ 16 октября 2008

Короткий ответ: да, они менее эффективны.

Более длинный и запутанный ответ:

Да, они, вероятно, менее эффективны. Это зависит от того, какую СУБД вы используете, размер таблицы и т. Д. И т. Д. Поля TEXT имеют переменную ширину, и поэтому СУБД должна выполнять больше работы при поиске записей. Насколько это влияет на вашу производительность, прямо пропорционально тому, насколько эффективна ваша СУБД в целом, сколько данных она хранит о строках таблицы и оптимизирует ли она таблицы фиксированной длины.

Я знаю, что MySQL работает быстрее со строками таблицы фиксированной длины, но вы должны сказать ей, что таблицу можно сначала обработать как таблицу фиксированной длины. У меня нет никакого практического опыта работы с другими СУБД, чтобы иметь возможность сопоставлять реальные цифры. Но для таблиц с большим количеством (читает миллион или более) записей это может иметь существенное значение. Хотя таблицы меньшего размера практически не имеют практического различия.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...