Есть таблица likes (user_id: integer, post_id: integer, created_at: datetime, updated_at: datetime)
В этой таблице порядка нескольких миллионов записей.
Сервер делает несколько разных запросов по этой таблице, время выполнения этих запросов > 1 sec.
Запросы:
SELECT COUNT(*) FROM likes WHERE user_id = ?
SELECT COUNT(*) FROM likes WHERE post_id = ?
SELECT * FROM likes WHERE user_id = ? AND post_id = ?
Как узнать почему тормозят запросы, как их можно ускорить (все возможные варианты).
Есть такой запрос:
SELECT * from pending_posts
WHERE user_id <> ?
AND NOT approved
AND NOT banned
AND pending_posts.id NOT IN(
SELECT pending_post_id FROM viewed_posts
WHERE user_id = ?)
Какие индексы надо создать и как изменить запрос (если требуется) чтобы запрос работал максимально быстро.
В качестве базы данных можно использовать любую реляционную (postgres, mysql, oracle и т.д.)