0

DBにはほぼ数十万のレコードがあります...いくつかの条件に基づいてレコードを選択したいです..

$valは配列です...だから私はこのようないくつかのオプションがあります

forループを使用する

for(){
SELECT * FROM TABLE WHERE ID IN($val[$i]);
}

それ以外の場合は連結...

$value=$val[$i].','.$val[$i];

SELECT * FROM TABLE WHERE ID IN($value);

または私はOR条件に行くことができます

SELECT * FROM TABLE WHERE(ID=$value1 OR ID=$value);

最良の解決策はどれですか?

4

2 に答える 2

1

オプション 1 は、オプション 2 および 3 よりもはるかに低速です。1 つのクエリは常に高速です。このようにして、単純な(適切に設計された)クエリのクエリのほとんどの時間を費やすサーバーとのネットワーク通信にかかる時間を節約できます。

オプション 2 と 3 のどちらかを選択するには、MYSQL OR と IN のパフォーマンスを参照してください。

于 2012-07-16T16:45:32.177 に答える
0

それはあなたが何をする必要があるかによって異なります。

各結果セットを個別に処理したい場合は、このforアプローチを使用します。

すべてのデータをまとめて処理する必要がある場合は、このinアプローチを使用します。

いずれにせよ、テーブルが適切にインデックス付けされていることを確認してください。

于 2012-07-16T16:47:48.130 に答える