2016-05-29 6 views
2

私はどちらがSELECTのために優れている、テーブルがusersが今行MYSql:ROWSを取得するにはどちらが良いですか? (ここで、IN())または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; 
} 

私は最初のオプションが選択クエリをbetter.Usingされ、この

+2

ループ内でクエリを実行してはいけません – Strawberry

答えて

3

からよりよい解決策を知っていただきたいと思います内側のループは、最適化に影響するループのたびにデータベースサーバを要求しますシステム

+0

user_id IN(count no limit?) – grizzly

+1

IDの全体を配列に格納し、implodeを使用して配列を文字列にすることができます – Techy

1

より良い解Aと(...)

内のuser_idはあなたが選択クエリを毎回行うforarchループでクエリ1時間だけ

を行う溶液Aである これはパフォーマンスに重大な影響を与えます。

1

オプションは、ループがデータベースにクエリを実行するたびに正しくないために使用する方がよいです。あなたはすべてのデータを取ってあなたの要件に従って使用します。選択肢を選択するのは良い考えです。

関連する問題