I had a closer look to the table structure, it is pretty easy to understand:
index_id (auto-increment table ID)
store_id (each Store the product belong)
entity_id (product ID)
attribute_id (Tier Price, Cost, Price, Special Price)
customer_group_id (customer associated to the price, in case there are price are different upon customers)
qty (product quantity)
value (product price)
The same product is entered several times based on store, attribute, etc. So you’ll have a product stored 2 time if you have 2 Store, with 4 attributes you have 2 (store) x 4(attributes) = 8, and so on, to match all combinations.
What I do not understand is why many records are in the DB many times without difference. My guess is a lot of duplicate and useless entries are making the table growth.
I would try to export all products on .csv using the build in profiles, empty the table and finally run the import again.