Я делаю новое веб-приложение, используя Rails, и задавался вопросом, в чем разница между string
и text
? И когда каждый должен использоваться?Разница между строкой и текстом в рельсах?
ответ
Разница заключается в том, как символ преобразуется в соответствующий тип столбца в языке запросов.
с MySQL: строка отображается на VARCHAR (255) - http://guides.rubyonrails.org/migrations.html
:string | VARCHAR | :limit => 1 to 255 (default = 255)
:text | TINYTEXT, TEXT, MEDIUMTEXT, or LONGTEXT2 | :limit => 1 to 4294967296 (default = 65536)
Ссылка:
Когда каждый должен использоваться?
Как общее правило, используют :string
для ввода короткий текст (имя пользователя, адрес электронной почты, пароль, названия и т.д.) и использовать :text
дольше ожидаемого ввода, такие как описание, комментарий контента и т.д.
В вашей базе данных String переводится как «Varchar», а текст переводится как «текст». В varchar может быть гораздо меньше предметов, текст может быть (почти) любой длины.
Для углубленного анализа с хорошими отзывами проверить http://www.pythian.com/news/7129/text-vs-varchar/
Edit: Некоторые СУБД могут загрузить varchar
на одном дыхании, но магазин текст (и блоб) вне таблицы. A SELECT name, amount FROM products
может быть намного медленнее при использовании text
для name
, чем при использовании varchar
. А поскольку Rails по умолчанию загружает записи с SELECT * FROM...
, ваши текстовые столбцы будут загружены. Это, вероятно, никогда не будет реальной проблемой в вашем или моем приложении, хотя (преждевременная оптимизация - это ...). Но знать, что текст не всегда «свободен», хорошо знать.
Если вы используете Postgres использовать текст, где вы можете, если у вас есть ограничение размера, так как нет никакого падения производительности для текста против VARCHAR
там нет разницы в производительности между этими тремя типами, кроме увеличенной памяти при использовании пустым типом и несколькими дополнительными циклами ЦП для проверки длины n сохранение в столбце с ограничением длины. Хотя характер (n) имеет преимущества производительности в некоторых других системах баз данных, в PostgreSQL такого преимущества нет; на самом деле символ (n) обычно является самым медленным из трех из-за его дополнительных затрат на хранение. В большинстве случаев текст или символ варьированием следует использовать вместо
Но в интересах агностики базы данных, это лучший подход? Что делать, если вы хотите изменить базу данных? Я предоставляю в реальном мире, что этого не происходит часто, но все же ... если «нет различий в форме», почему бы не придерживаться ожидаемого использования строки для коротких вещей и текста для более длительных вещей? И, учитывая ваши собственные строки индексации комментариев, по-прежнему кажется лучшим подходом. –
Существует множество причин, по которым это может понадобиться в реальном мире, где лучше всего пролить мысль о том, что существует одно истинное решение любой проблемы. –
Это может быть так, но агностицизм базы данных - лжепророк. –
Как объяснялось выше, а не только дб тип данных он также будет влиять на вид, который будет создан, если вы подмости. Строка генерирует текст text_field, генерирует текстовое поле
Строка, если размер фиксированный и маленький, а текст - переменный и большой. Это очень важно, потому что текст больше, чем строки. Он содержит намного больше килобайт.
Так что для небольших полей всегда используйте строку (varchar). Поля вроде. first_name, login, email, subject (статьи или сообщения) и пример текстов: содержание/тело сообщения или статьи. поля для пунктов и т.д.
Строка размер 1 до 255 (по умолчанию = 255)
Размер текста 1 до 4294967296 (по умолчанию = 65536) 2
Используйте строку для короткого поля, как имена, адрес, телефон, Компания
Используйте текст для получения более подробной информации, комментариев, содержимого, абзацев.
Мое общее правило, если это нечто большее, чем одна строка, я обычно иду за текстом, если это короткие 2-6 слов, я иду за строкой.
Официальное правило: 255 для строки. Итак, если ваша строка содержит более 255 символов, перейдите к тексту.
- 1. Разница между строкой и текстом
- 2. Разница между текстом() и строкой()
- 3. Разница между текстом и строкой в Hadoop
- 4. разница между текстом и строкой в BeautifulSoup
- 5. Разница между строкой [,] и строкой [] []
- 6. Разница между строкой и строкой ^?
- 7. В чем разница между «строкой» и «строкой»?
- 8. В чем разница между строкой и строкой?
- 9. Разница между val() и текстом()
- 10. Разница между форматированной строкой и простой строкой
- 11. Разница между заявленной строкой и выделенной строкой
- 12. Разница между строкой и строкой C#
- 13. Разница между строкой [] и [string]
- 14. Разница между данными() и строкой()
- 15. EditText - пробел между текстом и строкой EditText
- 16. В чем разница между строкой и строкой и var?
- 17. Разница между текстом и IText в fabricJS
- 18. разница между текстом() и HTML() в JQuery
- 19. Разница между текстом и InnerHTML в селене
- 20. В чем разница между «содержанием» и «текстом»
- 21. Разница между get и match в рельсах
- 22. разница между -%> и%> в рельсах
- 23. Разница между modelname.new и modelname.create в рельсах?
- 24. разница между таблицей и подчеркиванием в рельсах
- 25. В чем разница между текстом/шаблоном и текстом/равным?
- 26. В чем разница между строкой и StringBuilder?
- 27. Разница между строкой и char [] в C++
- 28. Разница между подстрокой и строкой в java
- 29. В чем разница между CharSequence [] и строкой []?
- 30. В чем разница между строкой. и String.this. ?
Я думаю, что лучшее правило - всегда использовать ': text'. См. Http://www.depesz.com/2010/03/02/charx-vs-varcharx-vs-varchar-vs-text/ –
Для MySQL - не так много, вы можете иметь индексы на varchars, вы не можете по тексту , –
Реализация PostgreSQL предпочитает текст. Единственная разница для pg string/text - ограничение длины для строки. Нет различий в производительности. – wurde