SQLTeam.com | Weblogs | Forums

Deleting index to free up disk space


#1

I am new to mssql server and i need some help. There is a table on one of my databases that occupies a lot of space. And the space usage is as follows: (all values in KB)
reserved: 42329064
data: 16272288
index: 26050032
unused: 6744

This table takes up almost 80% of my database size, and the information is this table just captures the time spent by a user on the website(not very critical data)

I would like to know how to delete the entire index (which is what is occupying most space) to free up disk space. the index is a clustered index.
can someone pl tell me the steps to achieve this? I am new to mssql and my knowledge is just limited to getting along with navigating thru the ssms


#2

Clustered index doesn't hold separate copy of your original table data, rather your data is sort according to index key and is kept organized as Clustered Index. You can remove Non-Clustered indexes to restore space as these are separate copy of your original data but deleting Cluster index will not restored your data. Having Clustered Index mean you want to keep data organized sorted on key while if you don't have clustered index or remove clustered index form existing table then it means you want unorganized data as heap.

You can move old unused log data to archived tables in separate database. You can do this periodically you applying automated jobs. Or you can permanently remove unused non-required rows permanently (which is not a good idea on productions)


#3

You might also want to consider reviewing each data type you're using in that table and trim where possible. The smallest reasonable data type can produce a huge savings.


#4

If I recall correctly, the "index" for a clustered index only shows what the size of the B-Tree is and that should never be bigger than the data itself. Either something is horribly wrong or that Clustered Index is in desperate need of being defragmented.