MySql:为什么这个查询运行得如此之慢?

JD *_*cks 1 mysql sql performance

好的,我有这个购物车中的产品清单.我正在尝试将所有相关项目检索到购物车中的商品,而不会拉出购物车中的任何商品.

我编写了这个查询,它完全按照我想要的方式提取,但它的运行时间为8秒.

SELECT * FROM cart_product 
WHERE product_id 
IN(
    SELECT product_related_related_id FROM `cart_product_related` 
    WHERE product_related_product_id 
    IN (5401,5402,4983,5004)
) 
AND product_id 
NOT IN(5401,5402,4983,5004)
Run Code Online (Sandbox Code Playgroud)

显示行0 - 2(总共3行,查询占用7.9240秒)

有什么方法可以优化它以使其运行更快?

谢谢!

Pat*_*nza 9

你应该用JOIN替换子查询,它应该加快速度.

像这样的东西:

SELECT DISTINCT cart_product.* FROM cart_product 
  INNER JOIN cart_product_related ON product_id = product_related_related_id
WHERE product_related_product_id IN (5401,5402,4983,5004)
  AND product_id NOT IN(5401,5402,4983,5004)
Run Code Online (Sandbox Code Playgroud)