2010-07-31 3 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 запроса и двумя запросами ... это разница между 1 запросом и 1 + n запросами, где n - количество результатов, возвращаемых первым запросом. Таким образом, один запрос определенно более эффективен. –

ответ

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

+0

@Borealid - уже исправлено! –

Смежные вопросы