Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/296.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP和MySql函数的问题_Php_Mysql - Fatal编程技术网

PHP和MySql函数的问题

PHP和MySql函数的问题,php,mysql,Php,Mysql,在从MySQL获取今天日期的数据时,应该选择什么 1) "select * from table1 where created_dt Like CURDATE()"; 2) "select * from table1 where created_dt Like ".date(Y-m-d H:i:s); 如果我使用MySql函数而不是php函数,或者反过来使用php函数,那么脚本的执行时间会有什么不同呢?这种差异是可以忽略的,尽管用SQL生成日期可能会稍微快一些 不过,您不应该使用“like”,

在从MySQL获取今天日期的数据时,应该选择什么

1) "select * from table1 where created_dt Like CURDATE()";
2) "select * from table1 where created_dt Like ".date(Y-m-d H:i:s);

如果我使用MySql函数而不是php函数,或者反过来使用php函数,那么脚本的执行时间会有什么不同呢?

这种差异是可以忽略的,尽管用SQL生成日期可能会稍微快一些

不过,您不应该使用“like”,因为这是用于部分字符串比较的,并且您使用的是日期字段(内部为整数)。您的php日期示例还缺少两组引号

但最重要的是,如果您对created_dt使用datetime格式,然后尝试使用date(created_dt)或任何类型的字符串比较按日期进行匹配,您将无法利用索引,并且可能会导致全表扫描。您最好使用:

select * from table1 where created_dt between CURDATE() and date_add(CURDATE(), interval 1 day);

它可以利用已创建数据上的btree索引,使您的查询执行得更快、更有效。

最好使用选项
1
-在数据库服务器上计算的日期值,因为:

  • MySQL不需要将查询中的字符串值转换为日期,因为
    CURDATE
    检索日期值
  • PHP
    date
    函数解析参数并格式化日期,并将结果连接到查询字符串,这肯定是一项比mysql
    CURDATE
    函数更复杂的任务,后者没有参数,只检索日期
它会对脚本的执行时间产生任何影响吗


当然不是。IMHO,应该使用SQL版本,因为将使用内部数据库优化。没关系,我会选择第一个版本,因为它只适用于mysql,而不是混合。请选择最容易理解和移植的版本。担心像这样的代码行的性能约束是一种微观优化。后者既不调用有效的MySQL也不调用有效的PHP。这不是答案,而是说教。早熟优化可能是万恶之源,这可能是完全正确的,但这并不意味着你断然否认微优化版本之间存在差异——无论如何,你都会争辩说它没有价值,但并不是说它不存在(尤其是在没有对声明进行限定的情况下)。然而,OP需要学习一个更重要的课程,那就是如果你想让你的应用程序扩展到任何合理的大小,那么算法选择(特别是关于SQL中的索引使用)是很重要的。