[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Тяжелый запрос на выборку
Splaer
Доброго времени суток.
Дело такое:

Есть таблица в бд, где хранятся некие статьи + различные поля (не суть важно), в таком виде:
id
...
friend_id
text
...

Есть друзья юзера в вк, и нужно вытащить все существующие статьи с участием его друзей.

Так вроде все просто, но есть проблема - у человека 10 000 друзей, сделать выборку по каждому из них - это 10 000 запросов к бд по типу
SELECT * FROM table WHERE friend_id = некий id

Динамика количества друзей - вопрос десятый.

Главный вопрос - как это грамотно реализовать с наименьшей нагрузкой и нормальной скоростью отдачи ?
Или мускул не осилит сие действо и стоит ставить редиску ?
S.Chushkin
Цитата (Splaer @ 1.03.2013 - 17:22)
Или мускул не осилит сие действо и стоит ставить редиску ?

Элементарно, Ватсон! ... Тьфу, - "Splaer!"
SELECT * FROM table WHERE friend_id in (некий id, некий id-2, ... некий id-n)

+ Индекс на friend_id, +правильные настройки на максимальный размер запроса.
И всё будет "летать".

_____________
Рекламка / ad.pesow.com Хрень / mr-1.ru
Splaer
Цитата (S.Chushkin @ 1.03.2013 - 16:53)
правильные настройки на максимальный размер запроса.

Имеется ввиду max_allowed_packet ?
Valick
даже если у юзера 10000 друзей (хотя это скорее всего бот), вы же не собираетесь 10000+ статей выплевывать в браузер?
в общем случае используется пагинатор с выборкой по дате добавления, а в лучшем случае еще и с приоритетом по юзерам, что позволяет 10000 сократить до разумных пределов
в итоге получается обычный запрос, со старым добрым JOIN, и не надо никаких телодвижений в сторону максимального размера...

_____________
Стимулятор ~yoomoney - 41001303250491
S.Chushkin
Цитата (Splaer @ 1.03.2013 - 19:02)
Цитата (S.Chushkin @ 1.03.2013 - 16:53)
правильные настройки на максимальный размер запроса.

Имеется ввиду max_allowed_packet ?
Splaer
S.Chushkin , Valick Спасибо!
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.