【发布时间】:2008-11-14 05:24:39
【问题描述】:
我曾经这样做过:
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”语句确定它是否使用查询。
我在layers 表的ownerID 和collectionID 列以及drawings 表的layerID 列上有单独的索引。
我的查询有什么问题?
【问题讨论】:
标签: mysql optimization indexing subquery