PHP和MYSQL优化的方式按日期间隔选择

时间:2010-12-02 09:01:14

标签: php mysql optimization

哪种方法最快?

a)$query="SELECT id FROM example WHERE date_sent>='".$date1."' AND date_sent<='".$date2."'";

b)$query="SELECT id FROM example WHERE date_sent BETWEEN '".$date1."' AND '".$date2."'";

另外,如果我的日期格式为'02 / 12/2010',会更快更好吗?

a)将php中的日期转换为“2010-12-02”等格式并直接比较'WHERE date_sent>=2010-12-02'

b)使用mysql函数:     'WHERE date>=str_to_date('02/12/2010','%d/%m/%Y')'

由于

2 个答案:

答案 0 :(得分:2)

MySQL手册说:

  

如果expr大于或等于min且expr小于或等于max,则BETWEEN返回1,否则返回0. 这相当于表达式(min&lt; = expr AND expr&lt;如果所有参数都属于同一类型,则为


  

另外,如果我的日期格式为'02 / 12/2010',会更快更好吗?

如果该列为DATETIME,则将该列转换为VARCHAR类型或类似内容。

答案 1 :(得分:2)

将日期字符串转换为sql server使用的任何本机日期格式总是更快。您不必运行转换功能,服务器也不必运行转换。

BETWEEN通常更快,因为它由后端的特定代码处理。其中&lt; =&gt; =是通用代码并且必须进行测试。还要确保你有适当的索引。

也使用PDO,$ query =“SELECT id FROM example WHERE date_sent BETWEEN?AND?”;