优化多个IN的mysql子查询

时间:2014-05-14 09:17:51

标签: mysql sql subquery inner-join

需要帮助加快此查询速度。当p.article IN ('200101')中只有一篇文章时,查询以0.0006秒运行。如果两篇文章在p.article IN ('200101','200102')中,则查询在0.6414秒内运行。

由于我需要对大约3000个项目运行此查询,我想加快一点。我认为解决方案是INNER JOIN,但我自己无法弄明白。

SELECT p.article, (
    SELECT s.final_item
    FROM  `structure` s
    WHERE s.item = p.article
    ORDER BY s.level DESC 
    LIMIT 1
) AS final_item
FROM products p
WHERE p.article IN ('200101','200102')

1 个答案:

答案 0 :(得分:1)

首先,您应该拥有表格产品中的文章索引和表格结构中的项目。

如果给定产品的结构总是至少有一行,您可以尝试一下:

SELECT s.final_item, p.article
    FROM  `structure` s INNER JOIN products p ON s.item = p.article
    WHERE s.article IN ('200101','200102')
    ORDER BY s.level DESC 
    LIMIT 1