When indexes become too large, especially composite indexes, it is beneficial to create an artificial column that is assigned to a row, with a secondary lookup table that is used to translate between the internal ID and the original columns.
This may increase response time for certain queries, but the overall performance gain due to a more compact index and shorter data rows is usually worth the effort.