2010-11-05 18 views
10

Sto cercando di eseguire una query che restituirà un elenco di colonne in una tabella che sono indicizzati FULLTEXT. La tabella è in formato MyISAM e userò php per costruire la query.Mostra tabelle FULLTEXT colonne indicizzate

Idealmente vorrei eseguire la query e restituirebbe le informazioni in modo da poter costruire una stringa separata da virgola delle colonne.

ad es. "first_name, last_name, email"

Ciò è possibile in MySQL?

risposta

20

È possibile ottenere tali informazioni dalla tabella information_schema.STATISTICS.

Ti fornirò la query per ottenere tutte le colonne della tabella che si trovano in uno o più indici FULLTEXT, poiché penso che sia quello che stai chiedendo. Tieni presente che le combinazioni specifiche di colonne in ciascun indice FULLTEXT sono molto importanti. MySQL non può usare un indice FULLTEXT per cercare più colonne a meno che non ci sia un singolo indice FULLTEXT che includa tutte quelle colonne.

Ecco la prima query che fornisce l'output che hai chiesto:

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

Ed ecco quello che mostra le varie combinazioni di colonne con testo completo: Indice se non v'è più di 1 sul tavolo:

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

Questo è fantastico, ho sempre ignorato ciecamente quel database di information_schema prima, ora mi hai aperto gli occhi su un mondo di possibilità! – th3hamburgler

0

Ecco un altro modo:

SHOW CREATE TABLE [database_name].[table_name] 

Sostituire i segnaposto parentesi w con i tuoi valori.

Controllare l'uscita per linee FULLTEXT.

Problemi correlati