$gadd=mysql_query("SELECT `id2` FROM `tab1` WHERE `id`='".$a."' LIMIT 1");
$gadd_i=mysql_fetch_assoc($gadd);
$gadd2=mysql_query("SELECT `name`,`img` FROM `tab2` WHERE `id2`='".$gadd_i['id2']."' LIMIT 1");
$gadd2_i=mysql_fetch_assoc($gadd2);
echo $gadd2_i['name'];
Собственно, проще лучше? На странице этот блок встречается раз 10-15 в tab1 несколько тысяч записей, в tab2 около двух сотен.
Спустя 27 минут, 18 секунд (8.05.2012 - 08:16) sergeiss написал(а):
Ты самое главное не сказал: таблицы связаны между собой? Из написанного можно предположить, что они связаны по id2. Если так, то JOIN "тебе в руки".
Спустя 5 минут, 19 секунд (8.05.2012 - 08:21) Kuliev написал(а):
A.B.C.
Как-то так можно сделать в один запрос ;)
Или как предложил sergeiss
$sql = "SELECT `name`,`img`
FROM `tab2`
WHERE `id2` IN('SELECT `id2` FROM `tab1` WHERE `id`='".$a."' LIMIT 1')";
$result = mysql_query($sql) or die(mysql_error() .'<br />'. $sql);
Как-то так можно сделать в один запрос ;)
Или как предложил sergeiss
Спустя 28 минут, 38 секунд (8.05.2012 - 08:50) TranceIT написал(а):
SELECT tab2.name, tab2.img
FROM tab1, tab2
WHERE tab1.id = tab2.id2;
Спустя 27 минут, 12 секунд (8.05.2012 - 09:17) GET написал(а):
sergeiss
,Kuliev
Сделал 3 варианта на 1000 запросов. INNER JOIN оказался самым быстрым.
TranceIT Мне кажется по твоему запросу он все совпадения вытащит, а мне надо чтоб `id`=$a;
Всем большое спасибо.
,Kuliev
Сделал 3 варианта на 1000 запросов. INNER JOIN оказался самым быстрым.
TranceIT Мне кажется по твоему запросу он все совпадения вытащит, а мне надо чтоб `id`=$a;
Всем большое спасибо.
Спустя 7 минут, 52 секунды (8.05.2012 - 09:25) TranceIT написал(а):
А, ну да
SELECT tab2.name, tab2.img
FROM tab1, tab2
WHERE tab1.id = $a
AND tab1.id = tab2.id2;
Спустя 3 часа, 5 минут, 19 секунд (8.05.2012 - 12:30) inpost написал(а):
A.B.C.
А ты отключал кеширование при запросах?
Вообще в первоначальном виде 2 отдельных запроса должны быть быстрее, чем с JOIN. Но это проверять надо. Я когда соединял через LEFT JOIN по условию - то производительность падала в 2-3 раза. 4 маленьких отдельных запроса оказались быстрее.
А ты отключал кеширование при запросах?
Вообще в первоначальном виде 2 отдельных запроса должны быть быстрее, чем с JOIN. Но это проверять надо. Я когда соединял через LEFT JOIN по условию - то производительность падала в 2-3 раза. 4 маленьких отдельных запроса оказались быстрее.
Спустя 14 минут, 10 секунд (8.05.2012 - 12:44) GET написал(а):
inpost
Ну вот так 0.3 сек, а с двумя простыми 0.4 сек.
1000 запросов (не чисто в MySQL, а с кодом страницы).
"SELECT `name`,`img` FROM `tab2` INNER JOIN `tab1` ON `id`='".$a."' AND `id2`=`id` LIMIT 1"
Ну вот так 0.3 сек, а с двумя простыми 0.4 сек.
1000 запросов (не чисто в MySQL, а с кодом страницы).
Спустя 44 минуты, 41 секунда (8.05.2012 - 13:29) sergeiss написал(а):
Одно маленькое уточнения для автора темы 
Вот этот запрос

Вот этот запрос
Цитата (TranceIT @ 8.05.2012 - 11:25) |
SELECT tab2.name, tab2.img FROMtab1, tab2 WHERE tab1.id = $a AND tab1.id = tab2.id2; |
тоже содержит JOIN,только в неявном (ненаписанном) виде. Называется он CROSS JOIN, который можно не писать вообще.
Спустя 4 минуты, 49 секунд (8.05.2012 - 13:34) GET написал(а):
sergeiss
Спасибо.
Спасибо.

Спустя 1 час, 12 минут, 6 секунд (8.05.2012 - 14:46) inpost написал(а):
A.B.C.
Что быстрее: запросить 1 кеш или запросить 2 кеша? Понятное дело 1 будет быстрее! Тестировать скорость надо на запросах без кеша.
Что быстрее: запросить 1 кеш или запросить 2 кеша? Понятное дело 1 будет быстрее! Тестировать скорость надо на запросах без кеша.
Спустя 43 минуты, 11 секунд (8.05.2012 - 15:29) Guest написал(а):
Вариант Kuliev`a, будет самый удачный в данном вопросе. Ибо именно он сделает то что надо
Спустя 42 секунды (8.05.2012 - 15:30) Guest написал(а):
в смысле без лишних доп действий. Вложеный запрос в данном случае оправдан
Спустя 7 минут, 56 секунд (8.05.2012 - 15:38) GET написал(а):
inpost
Кэш очищается запросом RESET QUERY CACHE, потом тест...так я понимаю?
Кэш очищается запросом RESET QUERY CACHE, потом тест...так я понимаю?
Спустя 1 час, 29 секунд (8.05.2012 - 16:38) SitnikovArtur написал(а):
>На странице этот блок встречается раз 10-15
То есть один и тот же запрос (или два) выполняется тоже 10-15 раз? Если так, то в первую очередь от этого избавиться нужно. Лезть в одну и ту же таблицу более двух раз плохо, очень плохо. Хотя может я что-то неправильно понял...
То есть один и тот же запрос (или два) выполняется тоже 10-15 раз? Если так, то в первую очередь от этого избавиться нужно. Лезть в одну и ту же таблицу более двух раз плохо, очень плохо. Хотя может я что-то неправильно понял...
_____________
Не тот велик, кто не падал, а тот кто падал и поднимался.