If you are using SQL Server 2008 or SQL Server 2008R2, or 2012 you can use table compression in addition to the indexes to get more efficient storage.
Basically table compression has two levels:
1. Row :row-level compression, sql server applies compact storage format for each row in table
2. Page: page-level compression, sql server apply compression algorithms to get more efficient storage on page level.
here is syntax to apply table compression while creating table:
Create table [tablename] (column_name column_type) with (DATA_COMPRESSION = ROW).
To measure how efficient is row or page compression is, you can use sp_estimate_data_compression_savings stored procedure.
The stored procedure accepts table_name, index_id, partition_type and type of compression you would like to apply and return how much data space would be allocated with given compression.
Usually with page compression you can get more efficient storage rather than row based compression as SQL server use compression algorithm for storage.