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

Печать / RSS
0
1. TERGUS5 02.01.2016 / 23:25
Пришелец
Помогите пожалуйста составить правильный запрос.

Имеется таблица "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
2. Вантуз-мен 02.01.2016 / 23:32
Господин ПЖ
1. TERGUS5, запрос нормальный, но думаю SQL_CALC_FOUND_ROWS тебе у тебя не используется, если так, то убирай из запроса и давай сюда EXPLAIN
0
3. TERGUS5 02.01.2016 / 23:35
Пришелец
EXPLAIN SELECT le.* FROM ?
0
4. Вантуз-мен 03.01.2016 / 10:31
Господин ПЖ
Да все верно, сделай так и структуру обеих таблиц
Изменил: Вантуз-мен (03.01.2016 / 10:32)
0
5. Вантуз-мен 03.01.2016 / 11:20
Господин ПЖ
3. TERGUS5, но мне кажется если уберешь SQL_CALC_FOUND_ROWS это должно решить проблему, так как SQL_CALC_FOUND_ROWS сперва просматривает всю таблицу и лишь затем делает выборку по лимитам
0
6. TERGUS5 05.01.2016 / 15:23
Пришелец
5. Vantuz, Что за "структуру обеих таблиц ?" Кинь пожалуйста готовый запрос.
0
7. TERGUS5 05.01.2016 / 15:41
Пришелец
EXPLAIN выводит только 2 непонятных запроса из таблицы
0
8. Иван 07.01.2016 / 18:44
Оранжевые штаны
А в чём проблема сделать типа 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

Или я не правильно понял?
0
9. TERGUS5 09.01.2016 / 19:19
Пришелец
Пишет

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
10. Вантуз-мен 09.01.2016 / 21:50
Господин ПЖ
Автор ну покажи структуру 2 таблиц, я же говорю запрос верный, возможно нет индексов, если не используется sql_calc_found_rows убери из запроса
Для выполнения действия необходимо авторизоваться!
Стикеры / Теги / Правила / Топ тем / Топ тем / Поиск