CPU utilization dangerously high due to COUNT queries
You can save some cpu cycles by using the same datatype as the column in your date range. So instead of:

WHERE (DATE(COL3) BETWEEN '2016-08-01' AND '2016-08-14')


assuming col3 is a timestamp, use something like:

where col3 &gt;= timestamp('2016-08-01 00:00:00') 
  and col3  &lt; timestamp('2016-08-15 00:00:00')   


You might need to use the unix_timestamp instead of timestamp conversion so that 'between' will work, but you can always do a &gt;= and a &lt; instead of using between.

There's also no need to include Col2 in your select, since col2 will always have the same value in each execution.

So, the query would become:

SELECT COUNT(DISTINCT col1)
FROM conversion_Details c 
WHERE col3 &gt;= timestamp('2016-08-01 00:00:00') 
  AND col3  &lt; timestamp('2016-08-15 00:00:00') 
  AND col4 IN (0, 17) 
  AND col5 = 5 
  AND col2 = 'SOMETHING' ;


A covering index would help to improve efficiency further. Try this one (order matters):

ALTER TABLE conversion_Details
  ADD INDEX covering_index_52431
    (col5, col2, col4, col3, col1) ;