MySQL query taking too long to execute
DATE(added_time) = CURDATE() 


is the root of some of the evil

Do not "hide" a column (added_time) inside a function (DATE) if want an index to be used.

If added_time is a DATE, then you can simply do 

added_time = CURDATE()


If it is a DATETIME or TIMESTAMP, then do

added_time &gt;= CURDATE() AND
added_time  &lt; CURDATE() + INTERVAL 1 DAY


Then your INDEX(added_time) can be used.