От вашего комментария до моего вопроса, я думаю, я знаю, в чем ваша проблема.
Если у вас есть прокси-сервер, который имеет 900 запросов, ваш первый по-прежнему считается 900 (на уровне или выше). Второй считается 899, третий 898 и так далее. Это то, что убивает вашу производительность. Теперь добавьте, что миллионы записей приведут к тому, что ваш запрос будет лишен смысла.
То, что вы можете захотеть сделать, - это установить максимальную дату для первой, к которой вы обращаетесь, в тех случаях, когда это имеет разумный смысл. Если у вас есть запросы прокси, такие как времена (и все значения успеха)
8:00:00
8:00:18
8:00:57
9:02:12
9:15:27
Действительно ли вам важно время успеха между 8:00:57 и 9:02 и 9:15? Если компьютер набирает активность в один час, а свет в другой - действительно ли это справедливая оценка времени успеха?
То, что вы МОЖЕТЕ желать, - это иметь некоторое (по вашему усмотрению) время отключения, например, в пределах 3 минуты. Что делать, если кто-то даже не возобновляет работу через какое-то время через прокси. Это действительно так? Опять же, ваше усмотрение
AND ( a.datetime <= b.datetime and b.datetime < date_add( a.datetime, interval 5 minutes )) )) <= 3 )
И <= 3 не дает вам того, что, я думаю, вы ожидаете. Опять же, ваш самый внутренний COUNT (*) подсчитывает все записи> = a.datetime, так что вы не получите, пока вы не дойдете до конца данного периода прокси, вы получите эти значения.
Итак Вы ищете ИСТОРИЧЕСКОЕ среднее время или только самые последние 3 временных цикла для данного прокси. То, что вы запрашиваете и запрашиваете, может быть двумя совершенно разными вещами.
Вы можете отредактировать исходное сообщение, чтобы уточнить. Я заканчиваю здесь до тех пор, пока не услышу ответ о возможном предложении дополнительной помощи.