День добрый господа, подскажите следующий вопрос, как реализовать выборку из БД следующего вида:
http://sqlfiddle.com/#!9/f62496/2
Что мы имеем:
1. Таблица записей
2. Таблица категорий
3. Таблица связи записей с категориями
Почти у всех записей по несколько категорий.
Необходимо реализовать 3 максимально быстрых MySQL запроса и проставить индексы:
1. Выборка 10 записей с определенной категорией, например 2, сортировка по полю date и условие date <= 1491502307 AND approve = 1
2. Выборка 10 записей в которых присутствуют одновременно три категории, например 2,4,6 (количество категорий может быть разное), с сортировкой по убыванию количества совпадений. Условие (date <= 1491502307 AND approve = 1) пример:
sqlfiddle.com/#!9/aa8497/4. В данном примере выборка производится по трем категориям (может быть и более) и записи из бд выводятся сортируясь по количеству совпадений, по убывающей. Это максимум что я смог сделать.
3. Какие индексы нужно проставить для ускорения выборки ?
Решения есть, но кажется что они далеко не идеальные.