Вы уж определитесь, NOW() выполняется для формирования выборки или для каждой строки.
Вы документацию-то пробовали читать? Или у вас только своя вольная интерпретация имеется?
Ещё раз приведу эту же строчку:
"NOW() returns a constant time that indicates the time at which the statement began to execute."
И по-русски дословно:
"NOW() возвращает временнУю константу, указывающую, в какой момент времени начал выполняться запрос."
Вот вам пример, который выводит одну строку из таблицы, хотя по вашему утверждению должен выводить две.
И не вводите людей в заблуждение!
CREATE TABLE `test` ( `ts` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00' ON UPDATE CURRENT_TIMESTAMP ) ENGINE=InnoDB DEFAULT CHARSET=utf8; INSERT INTO `test` SET `ts`=NOW()-INTERVAL 5 SECOND; INSERT INTO `test` SET `ts`=NOW()+INTERVAL 2 SECOND; SELECT SLEEP(5), `ts` FROM `test` WHERE `ts`<NOW();
А при чём тут кеширование запросов? Речь шла об "вычислить её для каждой строки".
NOW() returns a constant time that indicates the time at which the statement began to execute.
https://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html#function_now
AND P.post_date < NOW()
Про отложенную публикацию не слышали? :)
NOW() в таком виде вычисляется единожды, в момент создания запроса, а не для каждой строчки.
Подобные проблемы лучше решать оптимизацией запросов или структуры БД, чем добавлением ресурсов.
Читайте про Slowloris attack и как с ним бороться.
Нормальные злобные боты, которые хотят спарсить ваш сайт или нащупать уязвимости, точно не будут делать 15 запросов с одного IP.
3-4, максимум 5. И больше вы их никогда не увидите.
Тогда остаётся два варианта:
1. Боты стали насколько умными, что прикидываются живыми посетителями
2. Часть айпишников сдали под прокси. Типа режим "Интернет-эксплорер Турбо"
:)
А вы думаете, что в сетях Майкрософт™©® только боты водятся? :)
У них ещё и какое-то количество живых людей работает. Делают виндовс, офис и пр.
Большинство из штатов, потому что в штатах располагаются самые жирные "мусорохранилища" — Amazon, RackSpace, DigitalOcean и пр.
Это же MSN