哪种方法最快?
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')'
?
由于
答案 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?”;