vistas tablas rendimiento query para optimizar optimizacion lento grandes datos crear cantidades mysql alter-table create-table

rendimiento - tablas grandes mysql



Alterar tabla si existe o crear si no existe (2)

Bueno, si estás usando un lenguaje de codificación haz:

SHOW TABLES LIKE ''myTable''

si devuelve un valor, llame al alter, o llame al crear.

Necesito ejecutar un instalador que también puede ser un actualizador. El instalador debe poder terminar teniendo un determinado esquema / estructura de la base de datos mysql, independientemente de si alguna de las tablas existió, omitió algunas columnas o no necesita cambiarse porque su estructura está actualizada.

¿Cómo puedo hacer una combinación elegante de ALTER y CREATE ?

Estaba pensando que debe haber algo como "AGREGAR ... SI ... Duplicar"

Digamos que tengo la tabla A. En un cliente, la tabla tiene una columna -A1, y otro cliente tiene la misma tabla pero con la columna A1 y la columna A2.

Quiero que mi comando sql haga que la tabla A de ambos clientes contenga tres columnas: A1, A2 y A3.

Una vez más, mi script es un archivo sql que vuelco a mysql.

¿Cómo lo hago? Gracias :-)


MySQL INFORMATION_SCHEMA base de datos al rescate:

-- First check if the table exists IF EXISTS(SELECT table_name FROM INFORMATION_SCHEMA.TABLES WHERE table_schema = ''db_name'' AND table_name LIKE ''wild'') -- If exists, retreive columns information from that table THEN SELECT COLUMN_NAME, DATA_TYPE, IS_NULLABLE, COLUMN_DEFAULT FROM INFORMATION_SCHEMA.COLUMNS WHERE table_name = ''tbl_name'' AND table_schema = ''db_name''; -- do some action, i.e. ALTER TABLE if some columns are missing ALTER TABLE ... -- Table does not exist, create a new table ELSE CREATE TABLE .... END IF;

Más información:

ACTUALIZAR:

Otra opción, posiblemente más fácil, es eliminar la tabla existente y volver a crearla con el nuevo esquema. Para hacer esto, necesitas:

  1. Crear tabla temporal, una copia exacta de la tabla existente
  2. Rellena la tabla temporal con los datos de la tabla antigua
  3. Suelta la vieja mesa
  4. Crear la nueva tabla con el nuevo esquema.
  5. Rellene la tabla nueva con la información de la tabla temporal.
  6. Soltar tabla temporal.

Entonces, en código SQL:

CREATE TABLE old_table_copy LIKE old_table; INSERT INTO old_table_copy SELECT * FROM old_table; DROP TABLE old_table; CREATE TABLE new_table (...new values...); INSERT INTO new_table ([... column names from old table ...]) SELECT [...column names from old table ...] FROM old_table_copy; DROP TABLE old_table_copy;

En realidad, el último paso, "Eliminar tabla temporal", se puede omitir durante un tiempo. Por si acaso, desearía tener algún tipo de copia de seguridad de la tabla anterior, "just-in-case".

Más información: