Я имел в виду то, что запрос нужно было написать так:
SELECT name, text, SUM(reyt.reyt) as reyt, COUNT(reyt.id) AS kol FROM news LEFT JOIN reyt ON reyt.idn=news.id
GROUP by name, text
ORDER BY news.id DESC
и не более того.
А насчет скорости - в случае выборки одной новости тебе и рейтинг только одной посчитать надо, это быстро. твой же запрос просчитывает рейтинг 6000 новостей, обсчитывая 130000 записей.
Варианты ускорения:
1. Если есть возможность рулить сервером MySQL - поиграйся с переменными key_buffer и table_cache. Только учти что приэтом возрастут требования к доступной серверу памяти.
2. Подели таблицу рейтинга на две. В одну сбрось состояние рейтинга в виде (номер_новости, число голосов, сумма оценок), а вторую оставь как есть. Первую таблицу обновляй примерно раз в сутки на основе второй, вторую при этом очищай.
Если есть вопросы мыль на sarutobi at pisem.net