MYSql:哪一个更适合获取行?(其中在()中)或foreach

MYSql:哪一个更适合获取行?(其中在()中)或foreach,mysql,sql,database,Mysql,Sql,Database,我有一个表usersinclude100000行 现在,选择哪个更好 A. select * from users where user_id IN (5,12,5979,124,455594,5444,..........4568,10001,546,9979,21315); `$user_ids = {5,12,5979,124,455594,5444,.......4568,10001,546,9979,21315};` foreach ($user_ids as $id)

我有一个表
users
include100000

现在,选择哪个更好

A.

select * 
from users 
where user_id IN    
(5,12,5979,124,455594,5444,..........4568,10001,546,9979,21315);
`$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;
}
B.

select * 
from users 
where user_id IN    
(5,12,5979,124,455594,5444,..........4568,10001,546,9979,21315);
`$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;
}

我想从中了解更好的解决方案第一个选项更好。在循环过程中,每次使用select query INDER循环都会请求数据库服务器,这会影响系统的优化。

更好的解决方案是将用户id放入(…)

使用解决方案A,您只能执行一次查询

使用forarch循环,每次都执行select查询
这将严重影响性能

最好使用一个选项,因为每次循环都会查询数据库,这是不正确的。您只需获取所有数据并根据需要使用它。因此选择选项A将是一个好主意。

用户id所在位置(计数无限制?)您可以将整个id存储在一个数组中,并使用内爆将数组作为字符串。一个好的经验法则是永远不要在循环中执行查询