2010-07-31 65 views
1

是否可以使用1查询而不是2?或者这种方式更好? (针对速度)将查询数从2减少到1

<? 
$q1 = mysql_query("SELECT name,url,id FROM gallery") or die(mysql_error()); 

if (mysql_num_rows($q1) > 0) { 
    while ($row = mysql_fetch_array($q1)) { 
    echo 'IMAGES FROM '.$row['name']; 
    $id = $row['id']; 
    //second query for each gallery 
    $imgq = mysql_query("SELECT img FROM img WHERE ids=" . $id . " ") or die(mysql_error()); 
    while ($img = mysql_fetch_array($imgq)) { 
     ?><img src="<?=$img['img'];?>"><? 
    } //multiple images 
    } 
} 
+2

这不仅仅是执行1个查询和2个查询之间的区别......它是1个查询和1 + n个查询之间的区别,其中n是第一个查询返回的结果数量。所以一个查询肯定是更有效 – 2010-07-31 22:46:55

回答

4

您需要加入才能使其返回到一个查询中。

SELECT name,url,id,img 
FROM gallery g 
JOIN img i ON i.ids=g.id 

这样更有效,因为它减少了您正在创建的请求和表访问的次数。

这确实意味着您将带回name,url,id重复的行,但这样做的影响可能很小。

+0

这不太对,它可能应该是'i.ids = g.id' – Borealid 2010-07-31 22:36:37

+0

@Borealid - 已经修复! – 2010-07-31 22:36:59