2011-08-13 14 views
1

これらのMySQLのクエリの私は、次のSQLクエリを持って参加するかどうか

$select_query_1 = SELECT * FROM user_module_comments WHERE useid = '$hash' ORDER BY id DESC LIMIT 0, 25 
    while($table = mysql_fetch_array($select_query_1)){ 
    $user_moid = $table['canvas']; 
    $user_xtract_canvas = mysql_query("SELECT mcanvas FROM user_module WHERE uid = '$user_moid' LIMIT 1"); 
    $selected = mysql_fetch_array($user_xtract_canvas); 
    $user_canvas_extract = $selected['mcanvas']; // this is what i need 
    } 

ORこのSQLクエリより効率的 感謝ですこれらのクエリの

$select_query = SELECT user_module_comments.useid, user_module.mcanvas FROM user_module_comments LEFT JOIN user_module ON user_module.uid = user_module_comments.useid WHERE useid = '$hash' ORDER BY user_module_comments.id DESC LIMIT 0, 25 

を左に使用して、より効率的です

+0

ニックピッキング:クエリ文字列の前後に引用符がありません – knittl

答えて

1

JOINは、ループ内で関連するクエリを実行するよりはるかに高速です。一般に、nクエリを実行するよりも、常に1つのクエリを実行する方が速いです。私は、誰かが真実かもしれないユースケースを考え出すことができると確信しているので、「ほとんど常に」としか言いません。

SQL文をループ内で繰り返しコンパイルして実行し、実行し、行セットをフェッチする際に、多くのオーバーヘッドが発生します。単一のステートメントを使用すると、そのすべてのオーバーヘッドが排除されます。

あなたはinstall Xdebugであり、実行にどれくらいの時間がかかるかを知るためにPHPでこれらの記述を実際にプロファイルする必要があります。

関連する問題