哪个mysql查询更有效,使用左连接或不使用

时间:2011-08-13 11:50:15

标签: mysql left-join

我有以下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
  }

或者这个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

这些查询中的哪一个更有效 感谢

1 个答案:

答案 0 :(得分:1)

JOIN可能比在循环中执行相关查询要快得多。通常,执行一个查询几乎总是比执行 n 查询更快。我只说“几乎总是”,因为我确信有人可以提出一个相反的用例。

MySQL在循环中反复编译SQL语句,执行它并获取行集有很多开销。使用单个语句可以消除所有这些开销。

您应该install Xdebug并在PHP中实际分析这些语句,以了解它们执行的时间。