reconstruir - tamaño de indices mysql
¿Cómo muestro las restricciones únicas de una tabla en MySQL? (4)
Los creé, pero olvidé cuáles son.
Solo quiero
- mostrarles.
- Eliminar todas las restricciones en una tabla.
El OP pidió una sola mesa, lo que hará.
Además, al eliminar la última cláusula where
se mostrarán todas las columnas de una base de datos que están protegidas por restricciones únicas:
SELECT
CONSTRAINT_NAME,
TABLE_NAME,
COLUMN_NAME
FROM information_schema.KEY_COLUMN_USAGE
WHERE
CONSTRAINT_NAME LIKE ''UNIQ%''
AND TABLE_SCHEMA = ''your_database_name''
AND TABLE_NAME = ''your_table_name'';
Desafortunadamente, mysql no facilita la eliminación de índices basados en el resultado de una consulta. Puede ejecutar la salida de la siguiente consulta para eliminar todas las columnas únicas en 2 consultas:
SELECT CONCAT(
''ALTER TABLE '',
TABLE_NAME,
'' DROP INDEX '',
CONSTRAINT_NAME,
''; -- drops '',
COLUMN_NAME,
'' constraint''
)
FROM information_schema.KEY_COLUMN_USAGE
WHERE
CONSTRAINT_NAME LIKE ''UNIQ%''
AND TABLE_SCHEMA = ''your_database_name'';
Esto no produce resultados elegantes, pero es fácil de recordar:
SHOW CREATE TABLE table_name;
select distinct CONSTRAINT_NAME
from information_schema.TABLE_CONSTRAINTS
where CONSTRAINT_SCHEMA = ''mysql''
select distinct CONSTRAINT_NAME
from information_schema.TABLE_CONSTRAINTS
where table_name = ''table_name'' and constraint_type = ''UNIQUE'';