2011-08-02 16 views
0

Iはデータの配列を有する:オプションの配列から複数の結果を返すには?

$ary = new array(
    array("domain"=>"domain1", "username"=>"username1"), 
    array("domain"=>"domain1", "username"=>"username2"), 
    array("domain"=>"domain2", "username"=>"username3"), 
); 

Iは、(例示のために簡略化)次の表構造とMySQLデータベースからデータを取得するためにこのデータを使用する必要があります。

domain_table 
    domain_id 
    domain 

user_table 
    user_id 
    user 

stuff_table 
    stuff_id 
    ... details 

link_table 
    link_id 
    user_id -- The user we are searching for connections on 
    connected_user_id -- from the array above 
    stuff_id 

Iはまた、アレイからconnected_user_idを有する単一USER_IDためのものテーブルのすべての行をフェッチする必要があります。

私は、$進のエントリ数百人(おそらく数千人)があるかもしれませんPDO

を使用しています。

非常に大きなクエリを生成するには、配列をループしてジョインを追加します。 $ aryの各行に対して1つのクエリを実行できました。 $ aryで一時テーブルを作成し、結合を使用することができます。 他に何かありますか?

これを達成するために最善の方法は何ですか - 最速のプロセッサ時間はあまり秘密ではありませんか?それが可能であれば、多くは1

  • 次いで良好参加
  • が小さいため高速床の方法を - -

  • 答えて

    0
    1. 各行のための単一のクエリを実行ビュー&はそれを使用します。
    0

    データセット全体が巨大でメモリに収まらない場合は、結合を選択しないでください。

    順次選択を実行します。 link_tableから行を選択し、PHPの結果からuser_idを集めてください。次に、user_tableから「where user_id in(?)」を使用して行を選択します。 PHPでの結果のグループ化を扱います。

    大きなテーブルでも、キーで選択すると高速になります。そして、1つの選択の代わりに2つの選択をすることは問題ではない。

    あなたのDBがRAMに収まる間、ジョインは速くなります。その後、問題が発生します。

    +0

    RE:すべての結合が主キー上にあってもこれは当てはまりますか? – SystemicPlural

    関連する問題