Оптимизируйте ваши запросы.
Вот пример запроса, который можно ОПРЕДЕЛЕННО оптимизировать:
Вы разместили следующий запрос в качестве примера unique_ids_query в своем комментарии выше:
SELECT (SELECT COUNT(DISTINCT id,subid) FROM tb_stats WHERE subid = '1' AND date <= '2011-10-20') - (SELECT COUNT(DISTINCT id,subid) FROM tb_stats WHERE subid = '1' AND date <= '2011-10-19') AS unique_ids;
По сути, запрос получает изменение в различных комбинациях id, subid в период между 2011-10-20 и 2011-10-19, где subid равен '1'.Вы делаете это, сначала подсчитывая ВСЕ записи ниже даты 2011-10-20, а затем подсчитывая ВСЕ записи ниже даты 2011-10-19.У вас также есть три оператора SELECT в этом запросе.
Если я не ошибаюсь, это то же самое, что подсчитывать все записи между 2011-10-19 и 2011-10-20, что вы можете сделать с помощью следующего:
SELECT COUNT(DISTINCT id,subid) AS unique_ids FROM tb_stats WHERE subid = '1' AND date <= '2011-10-20' AND date >= '2011-10-19';
Вы также должны начать использовать MySQLi или PDO в PHP, если это возможно, для процедур хранения, которые также могут повысить производительность.
Кроме того, вы должны выполнить как можно больше запросовчерез одно соединение, чтобы уменьшить задержку соединения (это добавляет!)
Одним последним потенциальным благом было бы написание функций MySQL.Можно было бы выполнить приведенный выше запрос без использования COUNT или DISTINCT с функцией MySQL, которая могла бы повысить производительность сверх уровня, заданного его запуском в качестве функции.