Базы данных. Являются ли поля TEXT менее эффективными, чем varchar?

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

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

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

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

Я думаю, что все уже было сказано, в случае MySQL есть также «INDEX READ» для столбцов varchar и всегда «ROW READ» для текстовых столбцов. Что делает LIKE-запрос медленнее в TEXT-столбце.

Till 16.10.2008 14:18
ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
9
1
813
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 4

Ответ принят как подходящий

От Microsoft здесь

ntext, text, and image data types will be removed in a future version of Microsoft SQL Server. Avoid using these data types in new development work, and plan to modify applications that currently use them. Use nvarchar(max), varchar(max), and varbinary(max) instead.

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

  • Используйте varchar (max) вместо текста
  • Используйте nvarchar (max) вместо ntext
  • Используйте varbinary (max) вместо image

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

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

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

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

Это TEXT против CHAR. OP запросил TEXT против VARCHAR.

dan04 26.06.2010 07:03

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

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

В документации PostgreSQL говорится:

Tip: There are no performance differences between these three types, apart from increased storage size when using the blank-padded type, and a few extra cycles to check the length when storing into a length-constrained column. While character(n) has performance advantages in some other database systems, it has no such advantages in PostgreSQL. In most situations text or character varying should be used instead.

Другие вопросы по теме