Connaitre la taille des tables en SQL

par

dans

La solution est d’utiliser les données stockées dans la BDD information_schema et notamment les colonnes DATA_LENGTH et INDEX_LENGTH qui stockent respectivement la taille des données de chaque table et la taille des données des index de chaque table, le tout exprimé en bytes.

La requête suivante comme donc les 2 informations et effectue une multiplication pour obtenir la valeur en megabytes. La clause HAVING permet de ne lister que les tables dépassant une certaine taille, elle peut être retirée si l’on souhaite lister toutes les tables.

SELECT
  TABLE_NAME AS `table_name`,
  ROUND((DATA_LENGTH + INDEX_LENGTH) / 1024 / 1024) AS `size_mb`
FROM information_schema.TABLES
WHERE TABLE_SCHEMA = "database_name"
HAVING `size_mb` > 100
ORDER BY (DATA_LENGTH + INDEX_LENGTH) DESC;