Мелкий пишет:Повесить индекс. Везде строгие равенства, потому порядок полей в индексе для этого запроса значения не имеет.
Если в итоге индекс получился слишком объёмный (я так понимаю, $ip по недоразумению, $browser по определению - строки) - то действительно уместен хеш-индекс. mysql их напрямую не умеет, так что делается ещё одно поле, индексируется (ни в коем случае не уникальным ключом!) и туда пишется хеш от нужных данных. md5 тяжеловесен для хранения, банальный числовой crc32 наверняка даст достаточную селективность.
окей спс за подробное описание. + ещё один код есть. в этом точно есть что поправить. потому что что-то очень медленно работает `in`. если можно поправьте пожалуйста код на самый оптимальный.
CODE (
SQL):
скопировать код в буфер обмена
SELECT SQL_CALC_FOUND_ROWS site FROM hosts WHERE site_id IN (SELECT `id` FROM users WHERE cat='4' AND STATUS=0 ) GROUP BY site ORDER BY count(id) DESC,sum(hit) DESC;