2010-07-31 66 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