SELECT `id`, `nick`, `avatar` FROM `user` WHERE `id` IN (SELECT DISTINCT `from` FROM `message` WHERE `to` = '1' AND `type` = '0')
В таблице `message` около 7к записей. Данный запрос извлекал десяток.
На выполнение этого запроса ушла 21 сек !!!.
Переписал следующим образом:
$res = mysql_query("SELECT DISTINCT `from` FROM `message` WHERE `to` = '".$_SESSION['user']['id']."' AND `type` = '0'");
while($rs = mysql_fetch_assoc($res)) {
$from_a[] = $rs['from'];
}
$res = mysql_query("SELECT `id`, `nick`, `avatar` FROM `user` WHERE `id` IN (".implode(", ", $from_a).")");
Это дело выполнилось за 0.02 где-то. Проще говоря моментально.
В связи с этим встал вопрос, стоит ли использовать вложенные запросы и, самое главное, почему такая огромная разница в производительности!?!