484 Stimmen

Unterschied zwischen String und Text in Rails?

Ich mache eine neue Web-App mit Rails, und fragte mich, was ist der Unterschied zwischen string y text ? Und wann sollten sie eingesetzt werden?

576voto

TJ Koblentz Punkte 6788

Der Unterschied liegt darin, wie das Symbol in der Abfragesprache in den entsprechenden Spaltentyp umgewandelt wird.

bei MySQL wird :string auf VARCHAR(255) abgebildet

:string |                   VARCHAR                | :limit => 1 to 255 (default = 255)  
:text   | TINYTEXT, TEXT, MEDIUMTEXT, or LONGTEXT2 | :limit => 1 to 4294967296 (default = 65536)

Referenz:

https://hub.packtpub.com/working-rails-activerecord-migrations-models-scaffolding-and-database-completion/

Wann sollten sie eingesetzt werden?

Als allgemeine Faustregel gilt :string für kurze Texteingaben (Benutzername, E-Mail, Passwort, Titel usw.) und verwenden Sie :text für länger erwartete Eingaben wie Beschreibungen, Kommentarinhalte usw.

180voto

Omar Qureshi Punkte 8743

Wenn Sie Postgres verwenden, verwenden Sie Text, wo immer Sie können, es sei denn, Sie haben eine Größenbeschränkung, da es keine Leistungseinbußen für Text gegenüber varchar gibt.

Es gibt keinen Leistungsunterschied zwischen diesen drei Typen, abgesehen von dem größeren Speicherplatz bei der Verwendung des Typs mit Leerzeichen und einigen zusätzlichen CPU-Zyklen zur Überprüfung der Länge beim Speichern in einer längenbeschränkten Spalte. Während character(n) in einigen anderen Datenbanksystemen Leistungsvorteile hat, gibt es diesen Vorteil in PostgreSQL nicht; tatsächlich ist character(n) wegen seiner zusätzlichen Speicherkosten normalerweise der langsamste der drei Typen. In den meisten Situationen sollte stattdessen text oder character varying verwendet werden

PostsgreSQL-Handbuch

18voto

berkes Punkte 25943

String wird in Ihrer Datenbank mit "Varchar" übersetzt, während Text mit "text" übersetzt wird. Ein varchar kann viel weniger Elemente enthalten, ein text kann (fast) beliebig lang sein.

Eine eingehende Analyse mit guten Referenzen finden Sie unter http://www.pythian.com/news/7129/text-vs-varchar/

Bearbeiten: Einige Datenbank-Engines können laden varchar in einem Rutsch, aber speichern Sie Text (und Blob) außerhalb der Tabelle. A SELECT name, amount FROM products viel langsamer sein könnte, wenn man text für name als wenn Sie die varchar . Und da Rails standardmäßig die Datensätze mit SELECT * FROM... werden Ihre Textspalten geladen. Dies wird aber wahrscheinlich nie ein wirkliches Problem in Ihrer oder meiner Anwendung sein (Vorzeitige Optimierung ist ...). Aber zu wissen, dass Text nicht immer "frei" ist, ist gut zu wissen.

13voto

Gurudath BN Punkte 1332

String, wenn die Größe fest und klein ist, und Text, wenn sie variabel und groß ist. Das ist ziemlich wichtig, weil Text viel größer ist als Strings. Er enthält viel mehr Kilobytes.

Verwenden Sie daher für kleine Felder immer string(varchar). Felder wie: Vorname, Login, E-Mail, Betreff (eines Artikels oder Beitrags) und Beispiele für Texte: Inhalt/Body eines Beitrags oder Artikels, Felder für Absätze usw.

Stringgröße 1 bis 255 (Standard = 255)

Textgröße 1 bis 4294967296 (Standard = 65536)2

12voto

Ravi D Punkte 865

Wie oben erläutert, wird nicht nur der Datentyp der Datenbank, sondern auch die Ansicht, die generiert wird, wenn Sie Gerüstbau sind, beeinflussen. string erzeugt ein text_field text erzeugt einen text_area

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X