2009-04-18 7 views
11

J'ai une colonne TEXT dans une base de données MySQL. L'application est comme un blog et le col contient le corps des "messages". Je vais faire beaucoup de recherches booléennes complexes sur cette colonne. Les documents MySQL indiquent que vous devez définir la longueur de l'index pour les colonnes TEXT d'une longueur maximale de 767 octets pour les tables InnoDB.Quelle bonne longueur d'index pour une colonne de texte MySQL?

Dois-je le régler à la longueur maximale? Vaut-il mieux le faire moins que ça?

Répondre

16

Cela dépend de ce que vous aurez dedans.

Je suspecte à partir de votre question que vous imaginez qu'un index sur une colonne peut faire des choses qu'il ne peut pas faire. Un index conventionnel n'est pas un index de texte intégral et ne peut pas être utilisé pour rechercher des mots, ou toute correspondance de sous-chaîne autre qu'un préfixe. Les index de base de données sont utilisés pour trouver une valeur exacte ou une plage de valeurs uniquement: ils ne peuvent pas effectuer une correspondance arbitraire. En supposant que vous alliez utiliser un index pour quelque chose qu'il peut faire, alors la longueur devrait être la plus petite longueur qui vous laisse suffisamment de spécificité pour que vous puissiez trouver les lignes que vous voulez sans en lire trop. Combien de temps cela dépend du contenu de votre table, par exemple si votre table a plusieurs lignes avec le même préfixe, l'index doit être plus long que ce préfixe similaire pour éviter de les placer dans la même entrée d'index. être recherché.

5

Si vous faites des 'recherches booléennes complexes', il y a de fortes chances qu'un index normal ne vous soit d'aucune utilité. Je pense que vous trouverez probablement que vous avez besoin d'un full-text index.

-2

Dépend du nombre de caractères que vous pensez entrer dans ce champ. Cela peut parfois être difficile à connaître à l'avance, donc vous seul pouvez juger.

MySQL ne vous laisse-t-il pas par défaut (illimité)?

+0

Non, ce n'est pas le cas. Pas pour le texte. – User

Questions connexes