5
我想优化使用联合作为子查询的查询。我不知道如何构建查询。我使用MYSQL 5作为子查询的联盟MySQL
这里是原始查询:
SELECT Parts.id
FROM Parts_Category, Parts
LEFT JOIN Image ON Parts.image_id = Image.id
WHERE
(
(
Parts_Category.category_id = '508' OR
Parts_Category.main_category_id ='508'
) AND
Parts.id = Parts_Category.Parts_id
) AND
Parts.status = 'A'
GROUP BY
Parts.id
我想要做的就是替换这个((Parts_Category.category_id = '508' OR Parts_Category.main_category_id ='508')
部分与下面的工会。通过这种方式,我可以删除GROUP BY子句并使用应提高性能的直接col索引。零件和零件类别表包含五十万条记录,因此任何收益都会很大。
(
SELECT * FROM
(
(SELECT Parts_id FROM Parts_Category WHERE category_id = '508')
UNION
(SELECT Parts_id FROM Parts_Category WHERE main_category_id = '508')
)
as Parts_id
)
有没有人可以给我一个关于如何重写它的线索?我已经尝试了几个小时,但不能得到它,因为我只是MySQL的新手。
感谢曾经这么多Quassnoi。对于62,000行类别的FY1,查询返回时间大约快1秒! – gus 2009-07-21 14:31:41