Existe-t-il un moyen d'interroger la base de données pour savoir combien de lignes il y a dans toutes les tables?
c'est à dire.
table1 1234
table2 222
table3 7888
J'espère que vous pourrez conseiller
SELECT
TABLE_NAME,
TABLE_ROWS
FROM
`information_schema`.`tables`
WHERE
`table_schema` = 'YOUR_DB_NAME';
Ce qui précède vous donnera une approximation, mais si vous voulez un compte exact, vous pouvez le faire en deux étapes. Tout d'abord, exécutez une requête comme suit:
select concat("select '",table_name,"', count(*) from ",table_name,";")
from `information_schema`.`tables`
WHERE `table_schema` = '[your schema here]';
Cela produira une liste d'instructions SQL, une pour chaque table de votre base de données, que vous pourrez ensuite exécuter pour obtenir un nombre exact.
SELECT
table_name,
table_rows
FROM
INFORMATION_SCHEMA.TABLES
Cela vous donnera le nom exact de la table et comptera sur une seule liste
SELECT CONCAT('SELECT ''',table_name,''', COUNT(*) FROM ', table_name, ' union all')
FROM information_schema.tables WHERE table_schema = 'clw';
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
En synthétisant les informations ci-dessus et ce message dans un ensemble de requêtes, nous obtenons une requête auto-écriture qui donnera un nombre précis de lignes:
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;
Veut probablement cela si vous voulez juste des tables et pas de vues:
SELECT TABLE_NAME, TABLE_ROWS
FROM `information_schema`.`tables`
WHERE `table_schema` = 'schema'
AND TABLE_TYPE = 'BASE TABLE';