更快地使用MySQL的CURDATE()或PHP的日期()?

时间:2011-05-24 16:48:38

标签: php mysql

使用mysql查询是否更快:

SELECT CURDATE() as today

或PHP声明:

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

使用date() VS MySQL的NOW()CURTIME()是否也适用相同的答案?

6 个答案:

答案 0 :(得分:8)

如果您只是在进行查询以获取PHP脚本的日期,那么请使用PHP函数。在这两种情况下,PHP和MySQL都会调用系统时钟,将时间值变为格式化字符串,并将其返回。 MySQL版本将增加查询解析/编译的开销,以及来自PHP-> MySQL-> PHP的往返。如果您通过TCP套接字与MySQL通信,则会增加构建/发送/接收TCP连接和数据包的开销。

另一方面,如果您在查询中使用该数据值,最好将其保留在MySQL中。例如,通过随机机会,您可以在午夜之前立即启动脚本,以便PHP为其时间戳生成“May 24/2011 23:59:59.999”,但在“May 25/2011”之前查询不会在MySQL中执行00:00:00.001“,所以现在日期不匹配。

答案 1 :(得分:5)

这取决于。

将功能结果保留在其原生栖息地内几乎总是更快。
如果您要在php中使用日期,请使用php date()函数。

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

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

答案 2 :(得分:4)

如果是INSERT语句,最好使用mysql内置函数,但如果它是SELECT,则使用php函数'date();'会更快。

答案 3 :(得分:3)

如果问题是“在PHP应用程序中,我应该通过mysql_query('SELECT CURDATE() as today')$curdate = date('Y-m-d')获取当前日期吗?”,那么一定要使用PHP语句 - 仅数据库往返的开销就是矮人,一个人调用一个简单的内置PHP函数(加上网络延迟,如果appserver!= dbserver),那就更不用说你需要额外的代码来获得db结果(mysql_fetch_*()等)。

你可以在家里尝试这个;)并测量差异(我强烈推荐),但恕我直言date每次都会更快,除非出现一些疯狂的情绪。

答案 4 :(得分:2)

PHP一个更快。向MySQL发出查询只是为了询问当前的日期/时间需要在PHP和正在运行的MySQL服务器之间进行数据往返,这对于系统来说要比PHP本身更多的工作。

答案 5 :(得分:2)

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

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

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