2009-12-23 4 views
2

J'essaie d'ajouter un index de texte intégral à une table, mais cela ne semble pas s'appliquer.Pourquoi l'index FULLTEXT n'est pas rempli - MYSQL

ADD FULLTEXT `genre` (
`genre` 
) 

La requête exécute, mais le reste cardinalité à seulement 1 (même si j'ahve quelques milliers de dossiers)

J'ai essayé ANALYSER, la réparation et ne semblait mettre à jour l'index. Si je crée un index régulier, la cardinalité est mise à jour immédiatement.

Une sélection par rapport à l'index renvoie un ensemble vide, même si je connais des correspondances.

Répondre

2

La cardinalité a peu de sens pour les index FULLTEXT, car un enregistrement peut être référencé par plusieurs clés (une clé par mot).

Un index FULLTEXT sera toujours utilisé pour la requête si elle est applicable à tous:

SELECT * 
FROM genre 
WHERE MATCH(genre) AGAINST ('mystring') 

L'indice, bien que, indexera pas les mots moins de ft_min_word_len caractères (qui est 4 par défaut), et par conséquent la requête ne les correspondra pas.

Pourriez-vous s'il vous plaît poster la requête qui, selon vous, devrait fonctionner mais ce n'est pas le cas?

+0

Bingo. Ma rangée correspondante avait seulement 3 mots. Je suis juste passé à utiliser LIKE sur un INDEX et la différence de performance est négligeable. Merci! – Eddie

+0

'@ Eddie': vous pouvez également changer' ft_min_word_len' dans les paramètres MySQL. – Quassnoi