我曾经这样做:
SELECT layerID
FROM layers
WHERE ownerID = ?
AND collectionID = ?
这会给我一个 layerID 的数组,然后我会循环并为每一个执行此操作:
SELECT DATA
FROM drawings
WHERE layerID = ?
这一切都很好。所以现在我正尝试一步完成,所以我试试这个:
SELECT DATA , layerID
FROM drawings
WHERE layerID = ANY (
SELECT layerID
FROM layers
WHERE ownerID = ?
AND collectionID = ?
)
但由于某种原因,它不使用索引,用于主查询,SELECT DATA etc
!因此,与我之前执行的单独查询相比,这个组合查询需要更长的时间才能完成。(顺便说一句,子查询SELECT layerID etc
仍然使用索引)。
我已经通过使用'EXPLAIN'语句确定它是否使用查询。
我在表中的ownerID
和collectionID
列以及表中的列上有单独的索引。layers
layerID
drawings
我的查询做错了什么?