sql - MySql:为什么这个查询运行这么慢?

标签 sql mysql 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)

Showing rows 0 - 2 (3 total, Query took 7.9240 sec)

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

谢谢!

最佳答案

您应该用 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)

关于sql - MySql:为什么这个查询运行这么慢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1750028/

相关文章:

jquery - fadeIn() 和 show() 的性能有什么区别吗?

sql - 如何从 MySQL 中为每 n 条记录求和

mysql - 数据库中的最后一行

Android SQLite - 主键 - 插入表

php - Ajax、JQuery html 表重新排序

c# - MySQL BINARY 类型表示

c++ - 传递参数作为值与作为 const 引用的性能

c++ - 在 GPU 和 CPU 上添加二维数组的性能

mysql - 在 mysql 中实现某种枢轴

c# - LINQ MVC View 模型 : Multiple joins to the same table with optional field