2010-12-02 69 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