2016-05-29 29 views
2

我有一個表users包括行MYSql:哪一個更適合獲得ROWS? (其中())或的foreach

現在,哪一個是更好的選擇?

A.

select * 
from users 
where user_id IN  
(5,12,5979,124,455594,5444,..........4568,10001,546,9979,21315); 

B.

`$user_ids = {5,12,5979,124,455594,5444,.......4568,10001,546,9979,21315};` 

foreach ($user_ids as $id) { 
    select * from users where user_id = $id; 
} 

我想知道從這個

+2

一個好的經驗法則是永遠不要在循環內執行查詢 – Strawberry

回答

3

更好的解決方案的第一個選項是better.Using選擇查詢內循環會在循環過程中每次請求數據庫服務器,這會影響優化系統

+0

其中user_id IN(count no limit?) – grizzly

+1

您可以將整個id存儲在數組中並使用implode將數組作爲字符串 – Techy

1

更好的是其中USER_ID在(...)

隨着溶液A你與你進行選擇查詢每次forarch循環執行查詢一次只

溶液A 這對性能造成嚴重影響。

1

它最好使用A選項,因爲每次循環將查詢數據庫,這是不正確的。你只需要把所有的數據,並根據您的要求使用它。所以選擇選項A將是一個好主意。

相關問題