Solved: get table size

In managing databases, it’s crucial to understand the size of your table for effective storage and performance optimization. SQL, or Structured Query Language, is a powerful tool for handling data stored in a Relational Database Management System (RDBMS), or for stream processing in a Relational Data Stream Management System (RDSMS). It includes a variety of functions and commands that allow users to create, modify, and manage databases. In this article, we delve into the SQL commands essential in determining table size.

Fetching Table Size

Knowing the size of your table is essential in managing your storage and query performance. SQL provides us with several means to obtain this information.

    table_name AS `Table`, 
    round(((data_length + index_length) / 1024 / 1024), 2) as `Size in MB` 
FROM information_schema.TABLES 
WHERE table_schema = "your_database_name"
ORDER BY (data_length + index_length) DESC;

This SQL command fetches the sizes of all the tables in your database. It uses the `information_schema.tables` view to get the `data_length` (length of the data on the table) and `index_length` (length of the table’s index). This information is then summed and converted into MB (Megabytes) for easier understanding.

An In-Depth Look at the Code

Let us take a step-by-step look at what each line of the SQL command does.

table_name AS `Table`

This line renames `table_name` to `Table`.

round(((data_length + index_length) / 1024 / 1024), 2) as `Size in MB`

This particular line of code adds up the data length and index length to return the total storage used by the table. It then converts this from bytes into megabytes with the `/1024 /1024` args. The `round` function is used to round up the resulting number to two decimal places.

FROM information_schema.TABLES 

The `FROM` clause specifies the `information_schema.tables` as the source of data.

WHERE table_schema = "your_database_name"

The `WHERE` clause filters the data to only include tables from the specific database name provided.

ORDER BY (data_length + index_length) DESC;

Finally, the `ORDER BY` clause sorts the result in descending order of total storage used.


The `information_schema` is a special schema that contains the metadata of the entire database. This includes the name of the database, the name of the tables, the data types of the columns, and more. Essentially, it’s a database of your database.

The Importance of Monitoring Table Size

Monitoring your table size is key in ensuring the healthy operation of your databases. It helps in performance tuning, capacity planning, and database design. With it, you can identify tables that need to be reduced, split or archived, thus maintain optimal performance of your databases. Knowing the sizes can also help in cost management, as you can plan around your available storage resources.

Please note that

  • You should replace ‘your_database_name’ in the SQL statement with your actual database name.
  • The above SQL commands should work properly in MySQL/MariaDB databases.

In case you’re using different RDBMS, you may need to adjust the commands accordingly to adhere to your system’s SQL dialect.

Related posts:

Leave a Comment