alter table top_moc_200705_test drop index ix_top_moc_200705_date, add index ix_top_moc_200705_datemsisdn1 (date,servedmsisdn,qt_moc), add index ix_top_moc_200705_datemsisdn2 (date,servedmsisdn,qt_mtc), add index ix_top_moc_200705_datemsisdn3 (date,servedmsisdn,qt_cfw_no_vms),add index ix_top_moc_200705_datemsisdn4 (date,servedmsisdn,qt_mocSMS), add index ix_top_moc_200705_datemsisdn5 (date,servedmsisdn,qt_mtcSMS); mysql> DESC SELECT COUNT(servedmsisdn) as qt_voice_subscribers -> FROM -> (SELECT distinct servedmsisdn -> FROM top_moc_200705_test -> WHERE date between '20070501' and '20070530' AND qt_moc>0 -> UNION -> SELECT distinct servedmsisdn -> FROM top_moc_200705_test -> WHERE date between '20070501' and '20070530' AND qt_mtc>0 -> UNION -> SELECT distinct servedmsisdn -> FROM top_moc_200705_test -> WHERE date between '20070501' and '20070530' AND qt_cfw_no_vms>0) t \G *************************** 1. row *************************** id: 1 select_type: PRIMARY table: NULL type: NULL possible_keys: NULL key: NULL key_len: NULL ref: NULL rows: NULL Extra: Select tables optimized away *************************** 2. row *************************** id: 2 select_type: DERIVED table: top_moc_200705_test type: index possible_keys: ix_top_moc_200705_datemsisdn,ix_top_moc_200705_datemsisdn1,ix_top_moc_200705_datemsisdn2,ix_top_moc_200705_datemsisdn3,ix_top_moc_200705_datemsisdn4,ix_top_moc_200705_datemsisdn5 key: ix_top_moc_200705_datemsisdn1 key_len: 24 ref: NULL rows: 68683612 Extra: Using where; Using index; Using temporary *************************** 3. row *************************** id: 3 select_type: UNION table: top_moc_200705_test type: range possible_keys: ix_top_moc_200705_datemsisdn,ix_top_moc_200705_datemsisdn1,ix_top_moc_200705_datemsisdn2,ix_top_moc_200705_datemsisdn3,ix_top_moc_200705_datemsisdn4,ix_top_moc_200705_datemsisdn5 key: ix_top_moc_200705_datemsisdn2 key_len: 3 ref: NULL rows: 55950750 Extra: Using where; Using index; Using temporary *************************** 4. row *************************** id: 4 select_type: UNION table: top_moc_200705_test type: index possible_keys: ix_top_moc_200705_datemsisdn,ix_top_moc_200705_datemsisdn1,ix_top_moc_200705_datemsisdn2,ix_top_moc_200705_datemsisdn3,ix_top_moc_200705_datemsisdn4,ix_top_moc_200705_datemsisdn5 key: ix_top_moc_200705_datemsisdn3 key_len: 24 ref: NULL rows: 68683612 Extra: Using where; Using index; Using temporary *************************** 5. row *************************** id: NULL select_type: UNION RESULT table: type: ALL possible_keys: NULL key: NULL key_len: NULL ref: NULL rows: NULL Extra: 5 rows in set (25 min 8.93 sec)