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