¿Hay alguna forma de consultar el DB para averiguar cuántas filas hay en todas las tablas?MySQL - Cómo contar todas las filas por tabla en una consulta
es decir
table1 1234
table2 222
table3 7888
espera que usted pueda asesorar
¿Hay alguna forma de consultar el DB para averiguar cuántas filas hay en todas las tablas?MySQL - Cómo contar todas las filas por tabla en una consulta
es decir
table1 1234
table2 222
table3 7888
espera que usted pueda asesorar
SELECT
TABLE_NAME,
TABLE_ROWS
FROM
`information_schema`.`tables`
WHERE
`table_schema` = 'YOUR_DB_NAME';
Por lo que sé, cuenta de filas no se almacena para tablas InnoDB. Esta consulta puede dar una aproximación como máximo. –
no funciona para mí. "Table_rows" no encontrado –
Para obtener el recuento total en más de 2 tablas, puede modificarlo: 'SELECT SUM (TABLE_ROWS) FROM information_schema.tables WHERE table_schema = 'YOUR_DATABASE_NAME' && (TABLE_NAME = 'table1' || TABLE_NAME = 'table2 ') ' – degenerate
SELECT
table_name,
table_rows
FROM
INFORMATION_SCHEMA.TABLES
select sum(cnt) from
(
select count(*) as cnt from table1
union ALL
select count(*) as cnt from table2
union ALL
select count(*) as cnt from table3
)t1
El resultado de su consulta será diferente de lo que OP quiere: use 'select *' en lugar de 'select sum (cnt)' nad también use 'union all' en lugar de' union';). –
@ shA.t De acuerdo :) Actualizado. – a1ex07
Lo anterior le dará una aproximación, pero si quieres una cuenta exacta, se puede hacer en dos pasos. En primer lugar, ejecutar una consulta como la siguiente:
select concat("select '",table_name,"', count(*) from ",table_name,";")
from `information_schema`.`tables`
WHERE `table_schema` = '[your schema here]';
que producirá una lista de sentencias SQL, uno para cada tabla en su base de datos, a continuación, puede ejecutar obtener una cifra exacta.
Esto le dará el nombre de tabla exacta y contar con una lista única
SELECT CONCAT('SELECT ''',table_name,''', COUNT(*) FROM ', table_name, ' union all')
FROM information_schema.tables WHERE table_schema = 'clw';
La síntesis de la información anterior y this post en un conjunto de consultas, obtenemos una consulta auto-escritura que dará cuenta de las filas precisas :
SET @tableSchema = 'my_schema';
SET SESSION group_concat_max_len = 10000000;
SET @rowCounts = (
SELECT group_concat(CONCAT('SELECT ''',TABLE_NAME,''', COUNT(*) FROM ', TABLE_NAME) SEPARATOR ' union all ')
FROM information_schema.tables WHERE table_schema = @tableSchema
);
PREPARE statement FROM @rowCounts;
EXECUTE statement;
-- don't run dealloc until you've exported your results ;)
DEALLOCATE PREPARE statement;
probablemente querrá esto si lo que desea es tablas y no hay puntos de vista:
SELECT TABLE_NAME, TABLE_ROWS
FROM `information_schema`.`tables`
WHERE `table_schema` = 'schema'
AND TABLE_TYPE = 'BASE TABLE';
Respuesta extendida para hacerlo en un solo paso: http://stackoverflow.com/questions/24707814/mysql-summarize-all-table-row-counts-in-a-single-query – gwideman