2008-09-24 26 views

Respuesta

117

Uso SHOW INDEX así:

SHOW INDEX FROM [tablename] 

Docs: https://dev.mysql.com/doc/refman/5.0/en/show-index.html

+28

MOSTRAR ÍNDICE FROM 'my_table' WHERE Key_name = 'index_to_check'; – mit

+5

Mejor use Column_name en lugar de Key_name, de esta manera no necesita averiguar el nombre del índice si se agrega automáticamente sin nombre. – Programista

+0

¿Cómo verificar varias claves? – berserk

1

para: Ver en un diseño de tablas desde la CLI. que haría

desc mitabla

o

tabla muestran mitabla

32

Probar:

SELECT * FROM information_schema.statistics 
    WHERE table_schema = [DATABASE NAME] 
    AND table_name = [TABLE NAME] AND column_name = [COLUMN NAME] 

Se le dirá i f hay un índice de cualquier tipo en una determinada columna sin la necesidad de conocer el nombre dado al índice. También se trabajará en un procedimiento almacenado (en contraposición a mostrar índice)

9
SHOW KEYS FROM tablename WHERE Key_name='unique key name' 

se puede encontrar si existe una clave única de la tabla

6
show index from table_name where Column_name='column_name'; 
-2

no se puede ejecutar un programa específico de índice consulta porque generará un error si no existe un índice. Por lo tanto, debe tomar todos los índices en una matriz y recorrerlos si desea evitar cualquier error SQL.

Heres cómo lo hago. Agarro todos los índices de la tabla (en este caso, leads) y luego, en un bucle foreach, compruebo si el nombre de la columna (en este caso, province) existe o no.

$this->name = 'province'; 

$stm = $this->db->prepare('show index from `leads`'); 
$stm->execute(); 
$res = $stm->fetchAll(); 
$index_exists = false; 

foreach ($res as $r) { 
    if ($r['Column_name'] == $this->name) { 
     $index_exists = true; 
    } 
} 

De esta manera realmente puede reducir los atributos del índice. Haz un print_r de $res para ver con qué puedes trabajar.

-1

puede utilizar la siguiente instrucción SQL para comprobar la columna dada en la mesa fue indexada o no

select a.table_schema, a.table_name, a.column_name, index_name 
from information_schema.columns a 
join information_schema.tables b on a.table_schema = b.table_schema and 
            a.table_name = b.table_name and 
            b.table_type = 'BASE TABLE' 
left join (
select  concat(x.name, '/', y.name) full_path_schema, y.name index_name 
FROM information_schema.INNODB_SYS_TABLES as x 
JOIN information_schema.INNODB_SYS_INDEXES as y on x.TABLE_ID = y.TABLE_ID 
WHERE x.name = 'your_schema' 
and y.name = 'your_column') d on concat(a.table_schema, '/', a.table_name, '/', a.column_name) = d.full_path_schema 
where a.table_schema = 'your_schema' 
and  a.column_name = 'your_column' 
order by a.table_schema, a.table_name; 

ya que las uniones están en contra de INNODB_SYS_ *, por lo que los índices de concordancia sólo vino de tablas InnoDB sólo

0

utilizar la siguiente instrucción: SHOW dE ÍNDICE your_table

y después comprobar el resultado de los campos: fila [ "tabla"], fila [ "KEY_NAME"]

Asegúrese de escribir "Key_name" correctamente

Cuestiones relacionadas