2016-05-29 92 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将是一个好主意。

相关问题