2010-12-02 63 views
2

哪种方法最快?PHP和MYSQL优化方式按日期区间选择

一)$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

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

BETWEEN通常更快,因为它由后端的特定代码处理。 <=> =是通用代码,必须进行测试。还要确保你有适当的索引。

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

+0

+1为PDO提示。我只是想添加到我的答案。 – 2010-12-02 09:23:32

2

MySQL手册说:

如果expr大于或等于min和expr是小于或等于max,返回1 BETWEEN,否则返回0 这是相当于表达式(最小< = expr且表达式< = max)如果所有参数都是相同类型的。


此外,什么是更快,更好,如果我的格式为'02/12/2010' 的日期?

转换该列到DATETIME型或类似的,如果它是一个VARCHAR