I have a query that includes two WHERE clauses. Looks like this:
SELECT m
FROM Media m
WHERE m.userid = :id
AND m.timestamp = (SELECT MAX(mm.timestamp)
FROM Media mm
WHERE mm.userid = :id
AND mm.source IN :sources
AND mm.timestamp < :date)
What I want to know if this query will be faster with one index or should I create two seperate indexes for each WHERE clauses? Like:
- 1st index for 1st
WHERE = (userid, timestamp) - 2nd index for 2nd
WHERE = (userid, source, timestamp)
EDIT:
I have created 2 indexes.
- 1 -
(userid, source, timestamp) - 2 -
(userid, timestamp)
When I analyze the query, It always showing the second index used for the query.