Запрос с двух таблиц

Печать RSS
430

T
Автор
Пришелец
0
Помогите пожалуйста составить правильный запрос.

Имеется таблица "a_lenta" в ней хранятся события всех юзеров сайта, такие как добавил фото, песню, видео и т.д.
И ещё имеется таблица "a_subscribers" в ней хранятся user_id подписчиков. Мне нужно вывести с lenta события только тех пользователей, к которым я подписан.

Вот что я сделал:

$sql = "SELECT SQL_CALC_FOUND_ROWS le.* FROM #__lenta as le LEFT JOIN #__subscribers AS fr ON le.user_id = fr.friend_user_id
WHERE fr.user_id = '". USER_ID ."' ORDER BY le.id DESC LIMIT $this->start, $this->per_page";

Этот запрос правильный, но с ним очень долго страницы открываются.
Такое чувство как будто он всю базу гоняет, ну короче долго очень страницу открывает. Не могу понять почему

Господин ПЖ
0
1. TERGUS5, запрос нормальный, но думаю SQL_CALC_FOUND_ROWS тебе у тебя не используется, если так, то убирай из запроса и давай сюда EXPLAIN
T
Автор
Пришелец
0
EXPLAIN SELECT le.* FROM ?

Господин ПЖ
0
Да все верно, сделай так и структуру обеих таблиц
Изменил: Вантуз-мен (03.01.2016 / 10:32)

Господин ПЖ
0
3. TERGUS5, но мне кажется если уберешь SQL_CALC_FOUND_ROWS это должно решить проблему, так как SQL_CALC_FOUND_ROWS сперва просматривает всю таблицу и лишь затем делает выборку по лимитам
T
Автор
Пришелец
0
5. Vantuz, Что за "структуру обеих таблиц ?" Кинь пожалуйста готовый запрос.
T
Автор
Пришелец
0
EXPLAIN выводит только 2 непонятных запроса из таблицы

Оранжевые штаны
0
А в чём проблема сделать типа SELECT `le`.* FROM `lenta` AS `le` WHERE `le.user_id` IN (SELECT `friend_user_id` WHERE `fr.user_id` = '". USER_ID ."') ORDER BY `le`.`id` DESC LIMIT $this->start, $this->per_page

Или я не правильно понял?
T
Автор
Пришелец
0
Пишет

SELECT SQL_CALC_FOUND_ROWS `le`.* FROM `a_lenta` AS `le` WHERE `le.user_id` IN (SELECT `friend_user_id` WHERE `fr.user_id` = '1') ORDER BY `le`.`id` DESC LIMIT 0, 10
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE `fr.user_id` = '1') ORDER BY `le`.`id` DESC LIMIT 0,

Господин ПЖ
0
Автор ну покажи структуру 2 таблиц, я же говорю запрос верный, возможно нет индексов, если не используется sql_calc_found_rows убери из запроса
Стикеры / Теги / Правила / Топ тем / Топ постов / Поиск