1

どちらが速いですか?

  1. SQL の結果を配列に格納します。これは、1000 以上の ID を意味します。次に、in_array() 関数を 30 回使用して、MyID がデータベースにあることを確認します。

  2. MyID がデータベースにあることを確認し、それを 30 回繰り返します。

試験結果:

48 records (MyID)

Array count: 1704 (ID) (Table size: 100 000)

Delta time:

Method 1: 0.0075759887695312

Method 2: 0.0038831233978271
4

3 に答える 3

1

一度にすべてのIDを配列に取得する方が、MySQLサーバーに30回クエリを実行するよりもはるかに高速であると断言できます。

于 2013-03-23T16:54:35.877 に答える
0

代わりに (key,value) 連想配列を使用してください (実際、PHP ではすべての配列が連想配列ですが、これは重要ではありません)。配列のキーを ID として設定し、各値は (たとえば) 1 です。

$ids = array();
For all ID from database {
   $ids[ ID ] = 1;
}

ID が配列内にあるかどうかをテストするには

if (isset($ids[ ID ])) {
   // yes it is 
}

このように配列を使用すると、キーがツリーとして内部的に格納されるため、非常に高速です。検索の複雑さは ~ O(1) です。

于 2013-03-23T18:36:58.930 に答える
0

提案されたソリューションはどちらも正しくないようです。MySQL のIN 句を調べる必要があります。これにより、次WHEREのように、1 つのクエリで複数の値を取得できます。

SELECT something FROM table WHERE id IN(1, 4, 5, ...)
于 2013-03-23T17:13:29.407 に答える