2010-11-05 13 views
10

Ich bin auf der Suche nach einer Abfrage, die eine Liste der Spalten in einer Tabelle, die FULLTEXT indiziert sind zurückgeben. Die Tabelle ist im MyISAM-Format und ich werde PHP verwenden, um die Abfrage zu erstellen.Zeigen Sie Tabellen FULLTEXT indizierten Spalten

Im Idealfall würde ich die Abfrage ausführen, und es würde die Informationen zurückgeben, so dass ich eine Komma getrennte Zeichenfolge der Spalten erstellen könnte.

z.B. "first_name, last_name, email"

Ist dies in MySQL möglich?

Antwort

20

Sie können diese Informationen aus der Tabelle information_schema.STATISTICS abrufen.

Ich gebe Ihnen die Abfrage, um alle Spalten in der Tabelle, die in einem oder mehreren FULLTEXT-Indizes sind, zu erhalten, da ich denke, dass das, was Sie verlangen. Beachten Sie, dass die spezifischen Kombinationen von Spalten in jedem FULLTEXT-Index sehr wichtig sind. MySQL kann einen FULLTEXT-Index nicht verwenden, um mehrere Spalten zu durchsuchen, es sei denn, es gibt einen einzelnen FULLTEXT-Index, der alle diese Spalten enthält.

Hier ist die erste Abfrage, die die Ausgabe gibt Sie gefragt:

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

Und hier ist eine, die die verschiedenen Kombinationen von Spalten in FULLTEXT- Indexe zeigt, wenn es mehr als 1 auf dem Tisch:

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

Das ist großartig, ich habe die information_schema-Datenbank schon immer blind ignoriert, jetzt hast du meine Augen für eine Welt der Möglichkeiten geöffnet! – th3hamburgler

0

Hier ist eine andere Art und Weise:

SHOW CREATE TABLE [database_name].[table_name] 

Ersetzen Sie die Platzhalter in eckigen Klammern w mit deinen eigenen Werten.

Die Ausgabe für FULLTEXT-Zeilen durchsuchen.