2010-11-05 17 views
10

Estoy buscando ejecutar una consulta que devolverá una lista de columnas en una tabla que están indexadas en FULLTEXT. La tabla está en formato MyISAM y usaré php para construir la consulta.Mostrar tablas Columnas indexadas de FULLTEXT

Lo ideal sería ejecutar la consulta y devolvería la información para poder construir una cadena de columnas separadas por comas.

p. Ej. "first_name, last_name, email"

¿Es esto posible en MySQL?

Respuesta

20

Puede obtener esa información de la tabla information_schema.STATISTICS.

Le daré la consulta para obtener todas las columnas en la tabla que están en uno o más índices FULLTEXT, ya que creo que eso es lo que está pidiendo. Tenga en cuenta que las combinaciones específicas de columnas en cada índice FULLTEXT son muy importantes. MySQL no puede usar un índice FULLTEXT para buscar columnas múltiples a menos que haya un único índice FULLTEXT que incluya todas esas columnas.

Aquí está la primera consulta que da la salida que solicitó:

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

Y aquí está uno que muestra las diversas combinaciones de columnas en indexé FULLTEXT si hay más de 1 sobre la mesa:

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

Eso es genial, siempre he ignorado ciegamente esa base de datos de information_schema antes, ¡ahora me has abierto a un mundo de posibilidades! – th3hamburgler

0

Ésta es otra manera:

SHOW CREATE TABLE [database_name].[table_name] 

reemplazar los marcadores de posición entre corchetes w con tus propios valores

Peruse la salida para líneas FULLTEXT.

Cuestiones relacionadas