2012-01-22 26 views
0

哪這些等同物是優選的:

$medium_csv = implode(",",$medium_array); 
mysql_query('SELECT col1, col2 FROM table1 WHERE user_id IN ($medium_csv)'); 

或該:

foreach ($medium_array as $array_item) { 
    mysql_query('SELECT col1, col2 FROM table1 WHERE user_id = $array_item'); 
} 

* 陣列是項目10和500之間,如果該事項

+0

我第一個想到的是更好,因爲第二個將發送查詢請求超過一個數據庫,這將需要更多的時間邏輯。 –

+0

我的猜測:多個查詢比一個帶有IN的查詢要慢,因爲mysql只需要用'IN'解析一個查詢,而不是10到500個查詢。 –

+0

這將是一個很好的時間做一些基準測試。我們無法測試您的設置。在PHP中查看['microtime()'](http://php.net/manual/en/function.microtime.php)進行基本基準測試。 –

回答

3

10個500元話費之間進行到MySQL是不必要的,當你有一個電話解決的選項。就這麼簡單。

+0

+1和你@DorShermer,我幾乎需要'microtime()'來看誰先回答。 :)猜猜這很明顯。很高興知道。 – Kyle

1

不如SELECT IN,特別是如果user_id被編入索引。當一個簡單的SQL語句可以做到這一點時,真的沒有理由從php到mysql來回運行多達500次。

0

generaly你應該用更少的選擇堅持(除非你需要選擇一些討厭的連接)。如果你有兩種選擇,你應該總是以它爲基準。如果數組太長,也許將它分成幾部分是個好主意,但絕對不要在循環中逐一選擇它。