Количество записей MySQL с условием

0

Мне нужно получить количество записей в таблице "сообщения", где голосов >= 5 для создания разбивки на страницы.

таблицы:

table "posts": user_id, post_n, видимость, тип

значения видимости: 0, 1, 2; значения типа: "текст", "фото"... (это поле enum, имеет 6 значений)

таблица "голосов": vote_n, post_n, voter_id, голосовать

значения: -1 или 1

запрос:

SELECT post_n, (SELECT SUM(vote) FROM votes WHERE votes.post_n=posts.post_n)AS votes
FROM posts WHERE visibility=2 AND type='text' HAVING votes>=5

время 0.4039

Можно ли его оптимизировать?

Теги:
optimization

1 ответ

0

Я думаю, что вы получите лучшие результаты без подзапроса. Вы можете сделать это, используя GROUP BY:

SELECT p.post_n AS post_n, SUM(v.vote) AS votes
FROM posts p
INNER JOIN votes v ON (v.post_n = p.post_n)
WHERE p.visibility = 2 AND p.type = 'text'
GROUP BY p.post_n
HAVING SUM(v.vote) >= 5
  • 0
    я попробовал, время: 1.4446

Ещё вопросы

Сообщество Overcoder
Наверх
Меню