2010-11-03 9 views
7

Le pregunté a Google, pero todavía estoy confundido.Indexar una columna varchar

1) ¿Hay algún problema al indexar una columna Varchar? Cuando no debería, y Cuándo debería

2) Indexar una columna de carbón VS Varchar column.

Gracias

+0

Si Puedes apoyar una respuesta existente o tener algo que agregar, por favor hazlo. – Costa

Respuesta

4

1 - Índice de si se está consultando y es lo suficientemente selectiva. Si es una columna donde el 90% de los valores son iguales, no tendrá mucho sentido.

2 - Esto no es una pregunta, pero supongo que quieres saber si deberías. Sí, si lo consulta y cumple con los criterios anteriores.

+1

De hecho, la indexación (N) columnas varchar funciona bien. Solo tengo que vigilar la limitación del ancho de 900 bytes. – StuartLC

+0

Existen problemas de índice con varchar (max) y nvarchar (max) por lo que no deben usarse a menos que pretenda desbordar el tamaño del varchar y nvarchar ordinarios. campo. – HLGEM

+0

@HLGEM - ¿puedes dar más detalles? – JNK

0

el rendimiento general

En teoría/diseño, tiene un modelo lógico, donde, por ejemplo, nombre de usuario es único.

Sin embargo, en el momento de la implementación, usted sabe que usar esto es costoso (caso, acentos, longitud, etc.) comparado con el uso de una columna sustituta "userid" que es más eficiente como índice. Diciendo eso, tendrías un índice de nombre de todos modos porque debería ser único.

La diferencia sería donde usa este índice: si está en una tabla secundaria como columna de clave externa, no es una buena idea. O como un índice agrupado.

Como un índice único para una tabla sin FK, no es ni aquí ni allí.

Finalmente, usaría el char/varchar para cosas como el lenguaje ISO o los códigos de moneda (DE, EN, GBP, CHF, etc.). Pero mi corte varía para ser honesto ...

4
  • ad 1) Sí, límite de 900 bytes, claves enormes, muchas páginas de índice, muchas E/S involucradas, operaciones de índice ineficaces. Conclusión: NO, a menos que su varchar tenga una capacidad máxima de 50 caracteres.
  • tamaño
  • ad 2) Igual que 1. La diferencia real entre char vs varchar se fijan vs tamaño variable (es decir. char(100)) siempre tiene 100 bytes de datos en la página, varchar(100) tarda hasta 100)
Cuestiones relacionadas