Las bases de datos están muy preocupadas por el rendimiento: velocidad y minimización del almacenamiento. En la mayoría de las otras partes del mundo de la informática, no le molestará cuántos caracteres hay en su cadena de caracteres; podría ser uno, podría ser todo el contenido de una enciclopedia; todo es solo una cuerda. De hecho, muchos idiomas ni siquiera te molestan si se trata de una cadena o un número.
Pero a medida que las computadoras se vuelven más rápidas y ganan más memoria, las personas colocan más datos en sus bases de datos y hacen consultas más sofisticadas. Para una base de datos, la CPU y la memoria son tan limitantes hoy como lo fueron en los días de la memoria principal de 64Kb y los discos duros de 10Mb (en computadoras mainframe ).
Un número fijo de bytes es mucho más fácil de manejar que un número de longitud variable. 10 bytes es mucho más fácil de manejar que 1,000,000. Por lo tanto, su base de datos quiere que le dé una pista para poder darle un gigabyte de resultados de terrabytes de datos en microsegundos. Si no está usando su base de datos con tanta fuerza, no necesitará la velocidad que ofrece y se molestará con las preguntas innecesarias. Pero si necesita el rendimiento, estará encantado de darle algunas pistas.
Como se señaló en las otras respuestas, use char
si siempre usa un cierto número de caracteres, varchar
si la longitud puede variar pero no es demasiado grande ( supongo que la mayoría de los DB lo tratan como char
o text
dependiendo del tamaño), y text
si Podría ser de cualquier longitud. Si su SQL intenta usar una text
columna, podría ser mejor resumirlo de alguna manera y ponerlo también en una columna char
pequeña varchar
, luego haga where
's order by
' y 's' sobre eso. Por supuesto, eso solo si el rendimiento es importante para usted.
text
está en desuso. También hay consideraciones de uso que están relacionadas con el lugar donde se almacenan los datos y cómo se accede a ellos.