Как сделать выборку из mysql базы записей и таблицы связей с категориями?

stik.name
На сайте с 21.03.2010
Offline
80
890

День добрый господа, подскажите следующий вопрос, как реализовать выборку из БД следующего вида: 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) пример: http://sqlfiddle.com/#!9/f62496/2

3. Какие индексы нужно проставить для ускорения выборки ?

Решения есть, но кажется что они далеко не идеальные.

http://stik.name (http://stik.name) - Think different
stik.name
На сайте с 21.03.2010
Offline
80
#1

Тему отредактировать уже нельзя, потом вот структура таблицы и мои варианты решения, а так же исправление второго пункта:

1. http://sqlfiddle.com/#!9/aa8497/27

2. Выборка 10 записей в которых присутствуют одновременно три категории, например 2,4,6 (количество категорий может быть разное), с сортировкой по убыванию количества совпадений. Условие (date <= 1491502307 AND approve = 1) пример: http://sqlfiddle.com/#!9/aa8497/4. В данном примере выборка производится по трем категориям (может быть и более) и записи из бд выводятся сортируясь по количеству совпадений, по убывающей. Это максимум что я смог сделать.

vandamme
На сайте с 30.11.2008
Offline
672
#2

фидл не грузится нифига, лень ждать и отвечать

вам бы на более специализированны ресурсик - стаковерфлов.

там ответят.

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий