Существует страница, содержащая различные элементы из разных таблиц MySQL (новости, статьи, видео, аудио и т. Д.), Привязанные к определенному тегу (например, «экономика»).Разбиение страниц на страницы из нескольких таблиц
На данный момент из каждой таблицы извлекаются 100 строк, привязанных к тегу, а затем группируются и сортируются.
Мне нужно представить страницу на страницу, которая является болью в такой ситуации, потому что нужно собрать все предметы вместе, чтобы получить кусок с некоторого смещения с некоторой предельной длиной.
Мне кажется, мне нужны агрегированные элементы из каждой таблицы в одном источнике данных, а затем выполнить запрос (фильтр по тегам) и отсортировать (по дате) на нем.
Что я могу использовать для этой цели? Я рассматриваю поисковую систему Sphinx, но я не уверен, хорошо ли это в этом случае или нет - мне нужно только запрашивать и сортировать, а не полнотекстовый поиск.
Евгений Солдатов, так как я понимаю фильтры Sphinx по некоторым полям («тег» и «source_type» в вашем примере) намного быстрее, чем MySQL. Это также верно, если эти поля имеют индексы? На всякий случай, если у вас есть какая-либо информация о таком сравнении, пожалуйста, поделитесь им. – Vasily
По моему опыту, это быстрее. Особенно сфинксы делают это лучше всего, когда вам нужно подсчитывать все совпадения со многими фильтрами, возможно, с некоторой агрегацией (для разбивки на страницы). К сожалению, я не могу дать никаких ориентиров. Я использовал эту схему в бэкэнде для новостного мобильного приложения. Он имел около 1 тыс. QPS на одном экземпляре Sphinx и двух экземплярах MySQL. Объем данных составлял около 500к строк. –
Sphinx не имеет понятия «индексы», как база данных, ее совершенно другая настройка. По сути, ВСЕ данные представляют собой большой индекс, структурированный таким образом, чтобы быстро отвечать на запросы. См. Http://en.wikipedia.org/wiki/Inverted_index – barryhunter