使用mysql查询是否更快:
SELECT CURDATE() as today
或PHP声明:
$curdate = date('Y-m-d');
使用date()
VS MySQL的NOW()
和CURTIME()
是否也适用相同的答案?
答案 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()。