JIEXA
Новичок
Вложеные запросы, медлнее или также?
Привет!
Имеем 3 таблицы:
comments(MyISAM)
- id
- news_id
comments_full(InnoDB)
- comment_id
- comment_parent
- comment_level
- comment_fieldOrder
- user_id
- comment_message
users
- user_id
- user_avatar
- user_name
Записей в таблице комментариев много, поэтому решил посоветоваться
Мне нужно выбрать комменты определенной новости и упорядочить их по полю comment_fieldOrder
Есть два по сути одинаковых решения:
Первое решение(сначало вытаскиваем ID, затем пихаем в массив и потом делаем выборку камментов с определенными ID)
Второе(в условие WHERE подставляем вложенный запрос)
Что скажите? Как правильнее?
Привет!
Имеем 3 таблицы:
comments(MyISAM)
- id
- news_id
comments_full(InnoDB)
- comment_id
- comment_parent
- comment_level
- comment_fieldOrder
- user_id
- comment_message
users
- user_id
- user_avatar
- user_name
Записей в таблице комментариев много, поэтому решил посоветоваться
Мне нужно выбрать комменты определенной новости и упорядочить их по полю comment_fieldOrder
Есть два по сути одинаковых решения:
Первое решение(сначало вытаскиваем ID, затем пихаем в массив и потом делаем выборку камментов с определенными ID)
PHP:
<?
$query= $db->query("SELECT id
FROM comments
WHERE news_id = '".$news_id."'");
$news_ids = array();
while($data = $db->get_array($query)) array_push($news_ids, $data['id']);
$query= $db->query("SELECT cf.comment_level, cf.comment_message, cf.comment_datepost,
u.user_name, u.user_avatar
FROM comments_full AS cf,
users AS u
WHERE
cf.comment_id IN ('".implode("','", $news_ids)."') and
cf.user_id = u.user_id
ORDER BY cf.comment_fieldOrder");
?>
Второе(в условие WHERE подставляем вложенный запрос)
PHP:
<?
$query= $db->query("SELECT cf.comment_level, cf.comment_message, cf.comment_datepost,
u.user_name, u.user_avatar
FROM comments_full AS cf,
users AS u
WHERE
cf.comment_id IN (SELECT id FROM comments WHERE news_id = '".$news_id."') and
cf.user_id = u.user_id
ORDER BY cf.comment_fieldOrder");
?>