La semana pasada me surgió la necesidad de comparar 2 bases de datos casi idénticas en MySQL. Como me corria un poco de prisa, decidí crear una consulta simple para ver si todo estaba bien:
SELECT table_name, engine, row_format
, SUM( CASE WHEN table_schema = "base_datos_1" THEN table_rows ELSE NULL END) AS "base_datos_1"
, SUM( CASE WHEN table_schema = "base_datos_2
" THEN table_rows ELSE NULL END) AS "base_datos_2"
FROM information_schema.tables
WHERE table_schema = "base_datos_1" OR table_schema = "base_datos_2"
GROUP BY table_name
ORDER BY table_name DESC;
Los resultados obtenidos fueron:
Prácticamente, son iguales. Digo prácticamente, porque se puede comprobar cómo hay una importante diferencia en una tabla, datosmensual. Ante el resultado esperado, está claro que no hay que fiarse de los resultados de las estadísticas de information_schema, al menos en cuanto a número de registros! Así que, procedí a una segunda comprobación, que es comprobar el número de registros que tienen ambas tablas, cada una en su base de datos. La consulta utilizada fue la clásica :
SELECT COUNT(*) FROM tabla;
El resultado fue:
Así que, ojito cuando quieran saber el número de registros exactos de una tabla!
Espero les sea de utilidad!