2009-04-18 8 views
11

Tengo una columna TEXT en una base de datos MySQL. La aplicación es como un blog y la columna contiene el cuerpo de las "publicaciones". Haré muchas búsquedas booleanas complejas en esta columna.¿Qué longitud de índice tan buena para una columna de texto MySQL?

Los documentos de MySQL dicen que necesita establecer la longitud del índice para las columnas TEXT con una longitud máxima de 767 bytes para las tablas InnoDB.

¿Debo ajustarlo a la longitud máxima? ¿Es mejor hacerlo menos que eso?

Respuesta

16

Depende de lo que tenga.

Sospecho por su pregunta que está imaginando que un índice en una columna puede hacer cosas que no puede. Un índice convencional no es un índice de texto completo y no se puede usar para buscar palabras o cualquier subcadena que coincida con otro que no sea un prefijo. Los índices de la base de datos se utilizan para encontrar un valor exacto, o un rango de valores solamente: no pueden realizar una coincidencia arbitraria.

Suponiendo que va a usar un índice para algo que puede hacer, la longitud debe ser la más corta que le permita tener suficiente especificidad para encontrar las filas que desea sin leer demasiadas. Cuánto tiempo es eso depende de los contenidos de su tabla, por ejemplo, si su tabla tiene muchas filas con el mismo prefijo, el índice debe ser más largo que ese prefijo similar para evitar ponerlos en la misma entrada de índice, lo que significa que todos necesitan para ser buscado

5

Si está realizando 'búsquedas booleanas complejas', hay muchas posibilidades de que un índice normal no le sirva de ninguna manera. Creo que probablemente encuentres que necesitas un full-text index.

-2

Depende de la cantidad de caracteres que cree que va a ingresar en ese campo. A veces puede ser difícil saberlo de antemano para que solo usted pueda juzgar.

¿MySQL no le permite dejarlo como predeterminado (ilimitado)?

+0

No, no es así. No para TEXTO. – User

Cuestiones relacionadas