2010-11-05 6 views
10

Je cherche à exécuter une requête qui retournera une liste de colonnes dans une table indexée FULLTEXT. La table est au format MyISAM et j'utiliserai php pour construire la requête.Afficher les tables FULLTEXT colonnes indexées

Idéalement, je voudrais exécuter la requête et il renverrait l'information afin que je puisse construire une chaîne séparée par des virgules des colonnes.

par exemple. "first_name, last_name, email"

Est-ce possible en MySQL?

Répondre

20

Vous pouvez obtenir cette information à partir de la table information_schema.STATISTICS.

Je vais vous donner la requête pour obtenir toutes les colonnes de la table qui sont dans un ou plusieurs index FULLTEXT, puisque je pense que c'est ce que vous demandez. Gardez à l'esprit que les combinaisons spécifiques de colonnes dans chaque index FULLTEXT sont très importantes. MySQL ne peut pas utiliser un index FULLTEXT pour rechercher plusieurs colonnes sauf s'il existe un seul index FULLTEXT qui inclut toutes ces colonnes.

est ici la première requête qui donne la sortie que vous avez demandé:

select group_concat(distinct column_name) 
from information_schema.STATISTICS 
where table_schema = 'your_db' 
and table_name = 'your_table' 
and index_type = 'FULLTEXT'; 

Et voici une qui montre les différentes combinaisons de colonnes en texte intégral INDEXE s'il y a plus de 1 sur la table:

select index_name, group_concat(column_name) as columns 
from information_Schema.STATISTICS 
where table_schema = 'your_db' 
and table_name = 'your_table' 
and index_type = 'FULLTEXT' 
group by index_name; 
+0

C'est génial, j'ai toujours ignoré aveuglément cette base de données information_schema auparavant, maintenant vous avez ouvert mes yeux à un monde de possibilités! – th3hamburgler

0

Voici une autre façon:

SHOW CREATE TABLE [database_name].[table_name] 

Remplacer les espaces réservés w bracketing avec tes propres valeurs.

Parcourez la sortie pour les lignes FULLTEXT.

Questions connexes