使用MySQL的CURDATE()或PHP的date()更快?

使用MySQL的CURDATE()或PHP的date()更快?,php,mysql,Php,Mysql,使用mysql查询是否更快: SELECT CURDATE() as today 或PHP语句: $curdate = date('Y-m-d'); 相同的答案是否适用于使用date与MySQL的NOW和CURTIME?如果是INSERT语句,最好使用MySQL内置函数,但如果是SELECT,则使用php函数“date;”会更快 如果问题是在PHP应用程序中,我应该通过mysql_查询“选择CURDATE作为今天”,还是使用$CURDATE=date'Y-m-d'?来获取当前日期,那么一定要

使用mysql查询是否更快:

SELECT CURDATE() as today
或PHP语句:

$curdate = date('Y-m-d');

相同的答案是否适用于使用date与MySQL的NOW和CURTIME?

如果是INSERT语句,最好使用MySQL内置函数,但如果是SELECT,则使用php函数“date;”会更快

如果问题是在PHP应用程序中,我应该通过mysql_查询“选择CURDATE作为今天”,还是使用$CURDATE=date'Y-m-d'?来获取当前日期,那么一定要使用PHP语句-如果appserver!=dbserver,更不用说返回数据库结果所需的额外代码mysql_fetch_*et al


你可以在家里试试;我强烈推荐测量差异,但除了一些疯狂的复杂场景,IMHO date每次都会更快。

PHP的速度更快。向MySQL发出查询只是为了查询当前的日期/时间,需要在PHP和正在运行的MySQL服务器之间来回传输数据,这对系统来说要比PHP本身做的工作多得多。

这取决于实际情况

将函数结果保存在其原生栖息地内几乎总是更快。 如果要在php中使用日期,请使用php日期函数

如果要在查询中使用日期,请使用MySQL NOW函数

如果php和MySQL在不同的机器上运行,一定要尽可能长时间地将数据保存在每台机器中。网络上的往返将使所有其他考虑相形见绌。
争取最小的网络流量是一个很好的经验法则。

无论哪种方法导致两个平台之间的通信最少,都会更快

如果要更新语句的结果或将其插入数据库,请使用CURDATE


如果结果仅在PHP中使用,请使用date。

如果只是执行查询以将日期输入PHP脚本,请使用PHP函数。在这两种情况下,PHP和MySQL都会调用系统时钟,将时间值转换成格式化字符串,然后返回。MySQL版本将增加查询解析/编译的开销,以及从PHP->MySQL->PHP的往返。如果您通过TCP套接字与MySQL通信,则会增加构建/发送/接收TCP连接和数据包的开销


另一方面,如果在查询中使用该数据值,最好将其保存在MySQL中。例如,随机情况下,您可能会在午夜前立即启动一个脚本,因此PHP会为其时间戳生成may 24/2011 23:59:59.999,但查询直到may 25/2011 00:00:00.001才会在MySQL中执行,所以现在日期不匹配。

我认为第一个在mysql上插入更快,第二个最好在php页面上显示日期,不要插入到数据库中。请给我们更多的上下文信息-您是在数据库中还是在php中使用它?目前,无法决定。出于兴趣,你想在这里重复海龟把戏吗?通常正确,但不一定:MySQL查询中的函数是不可缓存的,因此对于somefield=CURDATE的大型表和复杂查询,最好使用PHP中的日期,这有其自身的风险,请参阅例如。当然,这是一个边缘案例,您应该始终测量并查看这是否有任何好处。如果我错了,请纠正我,但添加到您的答案中,用户不会看到使用PHPs date的额外好处吗?对于SELECT语句,当不使用CURDATE时,数据库可以缓存查询?使用MySQL函数的AFAIK需要重新计算可能缓存的查询。