Быстрее использовать MySQL CURDATE () или дату PHP ()?

Быстро ли использовать mysql-запрос:

SELECT CURDATE() as today 

или инструкции PHP:

 $curdate = date('Ym-d'); 

Используется ли тот же ответ на использование date() CURTIME() MySQL NOW() и CURTIME() ?

Если вы просто делаете запрос, чтобы получить дату в PHP-скрипте, используйте функцию PHP. В обоих случаях PHP и MySQL будут вызывать системные часы, помещать это значение времени в форматированную строку и возвращать его. В версии MySQL будут добавлены дополнительные накладные расходы на разбор / компиляцию запросов и обратную пересылку из PHP-> MySQL-> PHP. И если вы разговариваете с MySQL через сокет TCP, у вас есть дополнительные накладные расходы на сборку / отправку / получение TCP-соединения и пакетов.

С другой стороны, если вы используете это значение данных в запросе, вам лучше сохранить его в MySQL. Например, случайным образом, вы можете запустить скрипт непосредственно перед полуночью, так что PHP генерирует «Май 24/2011 23: 59: 59.999» для своей метки времени, но запрос не выполняется в MySQL до «Май 25/2011» 00: 00: 00.001 ", поэтому теперь даты не совпадают.

Это действительно зависит.

Почти всегда быстрее сохранить результат функции внутри своей родной среды обитания.
Если вы собираетесь использовать дату внутри php, используйте функцию php date() .

Если вы собираетесь использовать дату в запросе, используйте функцию MySQL NOW() .

Если PHP и MySQL работают на разных машинах, обязательно сохраняйте данные внутри каждой машины как можно дольше. В кругообороте сети будут затмевать все другие соображения.
Хорошим правилом является стремление к минимальному объему сетевого трафика.

если это оператор INSERT, лучше использовать встроенные функции mysql, но если это SELECT, быстрее использовать функцию php 'date ();'.

Если вопрос «в приложении PHP, должен ли я получать текущую дату через mysql_query('SELECT CURDATE() as today') или с помощью $curdate = date('Ym-d') ?», Тогда определенно используйте PHP заявление – накладные расходы на использование только одного сервера базы данных будут затмевать один вызов простой встроенной функции PHP (плюс сетевая латентность, если appserver! = dbserver), не говоря уже о дополнительном коде, который вам нужен, чтобы вернуть результат db ( mysql_fetch_*() и др.).

Вы можете попробовать это дома;) и измерить разницу (которую я очень рекомендую), но date IMHO будет быстрее с каждым разом, за исключением некоторого сумасшедшего свернутого сценария.

PHP один быстрее. Выдача запроса в MySQL только для того, чтобы узнать о текущей дате / времени, влечет за собой совместное путешествие данных между PHP и работающим сервером MySQL, что значительно повышает эффективность работы системы, чем просто PHP.

Какой бы ни был метод, наименьшая связь между двумя платформами будет более быстрой.

Если результат инструкции должен быть обновлен или вставлен в базу данных, используйте CURDATE ().

Если результат должен использоваться только на PHP, используйте date ().