I have run truncate table but it is still showing table occupying space?
Tables with Engine=InnoDB take a minimum of one block -- 16KB.

mysql&gt; CREATE TABLE minsz (x int) ENGINE=InnoDB;
Query OK, 0 rows affected (0.17 sec)

mysql&gt; SHOW TABLE STATUS LIKE 'minsz'\G
*************************** 1. row ***************************
           Name: minsz
         Engine: InnoDB
        Version: 10
     Row_format: Compact
           Rows: 0
 Avg_row_length: 0
    Data_length: 16384   &lt;-- Brand new table, still empty, yet 16KB
Max_data_length: 0
   Index_length: 0
...


If I had added an secondary index (not PRIMARY KEY), Index_length would also be one block.  (Heidi would probably show 32KiB.)

I might add a hundred rows before the table and/or its index expands beyond 16KB.