I used to do this:
SELECT layerID
FROM layers
WHERE ownerID = ?
AND collectionID = ?
Which would give me an array of layerID's, and then I'd loop and do this for each one:
SELECT DATA
FROM drawings
WHERE layerID = ?
And it all worked fine. So now I'm trying to do it in one step, so I try this:
SELECT DATA , layerID
FROM drawings
WHERE layerID = ANY (
SELECT layerID
FROM layers
WHERE ownerID = ?
AND collectionID = ?
)
But for some reason, it doesn't use the index, for the main query, SELECT DATA etc
! So this one combined query takes much much longer to complete, versus the separate queries I was doing before. (By theway, the subquery, SELECT layerID etc
still uses the index).
I've determined if it's using a query or not by using the 'EXPLAIN' statement.
I have individual indexes on the ownerID
and collectionID
columns in the layers
table, and on the layerID
column in the drawings
table.
What am I doing wrong with my query?