Estoy haciendo una nueva aplicación web usando Rails, y me preguntaba, ¿cuál es la diferencia entre string
y text
? ¿Y cuándo debería usarse cada uno?¿Diferencia entre la cadena y el texto en los rieles?
Respuesta
La diferencia se basa en cómo el símbolo se convierte en su respectivo tipo de columna en el lenguaje de consulta.
con MySQL: cadena se asigna a 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)
Referencia:
¿Cuándo se debe usar cada uno?
Como regla general, utilice :string
para la entrada de texto corto (nombre de usuario, correo electrónico, contraseña, títulos, etc.) y el uso :text
para la entrada ya esperado, tales como descripciones, contenidos, etc. comentario
Cadena se traduce como "Varchar" en su base de datos, mientras que el texto se traduce como "texto". Un varchar puede contener muchos menos elementos, un texto puede tener (casi) cualquier longitud.
Para un análisis en profundidad con buenas referencias comprobar http://www.pythian.com/news/7129/text-vs-varchar/
Editar: Algunos motores de base de datos pueden cargar varchar
de una sola vez, pero tienda de texto (y blob) fuera de la mesa. Un SELECT name, amount FROM products
podría ser mucho más lento al usar text
para name
que cuando usa varchar
. Y dado que Rails carga de manera predeterminada los registros con SELECT * FROM...
, se cargarán sus columnas de texto. Sin embargo, esto probablemente nunca sea un problema real en tu aplicación o en la mía (la optimización prematura es ...). Pero saber que el texto no siempre es "gratuito" es bueno saberlo.
Si está usando postgres use texto siempre que pueda, a menos que tenga una restricción de tamaño ya que no existe una penalización de rendimiento para texto versus varchar
No hay diferencia de rendimiento entre estos tres tipos, además de un mayor espacio de almacenamiento cuando se usa el tipo de relleno en blanco, y algunos ciclos de CPU adicionales para verificar la duración n almacenar en una columna de longitud limitada. Si bien el carácter (n) tiene ventajas de rendimiento en algunos otros sistemas de bases de datos, no existe tal ventaja en PostgreSQL; de hecho, el carácter (n) suele ser el más lento de los tres debido a sus costos adicionales de almacenamiento. En la mayoría de situaciones de texto o caracteres de longitud variable se deben utilizar en lugar
Pero, con el interés de ser una base de datos independiente, ¿es este el mejor enfoque? ¿Qué pasa si quieres cambiar la base de datos? Concedo, en el mundo real eso no sucede tan a menudo, pero aun así ... si no hay 'diferencia de rendimiento', ¿por qué no apegarse al uso esperado de la cuerda para las cosas cortas y el texto para las cosas más largas? Y dado su propio comentario de cadenas de indexación, todavía parece el mejor enfoque. –
Hay una serie de razones por las cuales podría ser necesario en el mundo real, donde es mejor dejar pasar la idea de que existe una solución única para cualquier problema. –
Eso puede ser así, pero el agnosticismo de la base de datos es un falso profeta. –
Como se explicó anteriormente, no sólo el tipo de datos db también afectará a la vista que se generará si está andamios. cadena generará un texto text_field generará un text_area
Cadena si el tamaño es fijo y pequeño y texto si es variable y grande. Esto es algo importante porque el texto es mucho más grande que las cadenas. Contiene muchos más kilobytes.
Así que para campos pequeños utilice siempre la cadena (varchar). Campos como. first_name, login, email, subject (de un artículo o publicación) y ejemplo de textos: contenido/cuerpo de una publicación o artículo. campos de los párrafos etc
tamaño de cadena de 1 a 255 (por defecto = 255)
tamaño de Texto 1 al 4294967296 (por defecto = 65536) 2
Usar cadena para el campo corto, como nombres, dirección, teléfono, compañía
uso de texto para mayor cantidad de contenido, comentarios, contenido, párrafos.
Mi regla general, si se trata de algo que es más de una línea, suelo ir para el texto, si se trata de un corto de 2-6 palabras, voy por cadena.
La regla oficial es 255 para una cadena. Entonces, si su cadena tiene más de 255 caracteres, busque texto.
- 1. Diferencia entre texto() y cadena()
- 2. Diferencia entre recursos y recursos en el enrutamiento de rieles?
- 3. Diferencia entre Convert.ToDecimal (cadena) y Decimal.Parse (cadena)
- 4. rieles ActionController: Diferencia entre request.remote_ip y request.remote_addr
- 5. Diferencia entre val() y texto()
- 6. Diferencia entre los tipos de cadena y char [] en C++
- 7. ¿Cuál es la diferencia entre Convert.ToBoolean (cadena) y Boolean.Parse (cadena)?
- 8. Diferencia entre archivos auxiliares y archivos lib en rieles
- 9. ¿Diferencia entre el protocolo y los delegados?
- 10. Diferencia entre el tipo de datos "Texto" y "Cadena" en SQLite
- 11. Rieles: ¿diferencia entre crear y nuevos métodos en ActiveRecord?
- 12. en rieles ¿cuál es la diferencia entre el modo de desarrollo y el modo de producción?
- 13. La diferencia entre $ * y $ @
- 14. Diferencia entre y
- 15. ¿cuál es la diferencia entre los navegadores y el nodo?
- 16. ¿Cuál es la diferencia entre (cadena [] args) y System.Environment.CommandLine?
- 17. Cuál es la diferencia entre el escaneo y el partido en la cadena Ruby
- 18. Rieles: ¿hay alguna diferencia entre 'references: foo' y 'integer: foo_id'?
- 19. diferencia entre el reenvío y la redirección
- 20. Diferencia entre la colección y el contenedor
- 21. La diferencia entre los bucles
- 22. Diferencia entre getString() y getResources.getString()
- 23. ¿cuál es la diferencia entre el método de cadena y el método str en Python?
- 24. ¿Cómo distingo la diferencia entre el objeto y la cadena en javascript?
- 25. Rieles 3. ¿Cómo obtener la diferencia entre dos matrices?
- 26. Diferencia entre los métodos Map.put y Map.putAll?
- 27. Diferencia entre los métodos EventLog.WriteEntry y EventLog.WriteEvent
- 28. ¿Cuál es la diferencia entre el colado y la coerción?
- 29. Diferencia entre archivos escritos en modo binario y texto
- 30. Diferencia entre el tipo de cadena javascript y el objeto de cadena?
Creo que una mejor regla de oro es usar siempre ': text'. Consulte http://www.depesz.com/2010/03/02/charx-vs-varcharx-vs-varchar-vs-text/ –
Para MySQL: no tanto, puede tener índices en varchar, no puede en texto . –
La implementación de PostgreSQL prefiere texto. La única diferencia para pg string/text es la restricción en la longitud de la cadena. Sin diferencias de rendimiento. – wurde