mysql-当我使用子查询时,它需要花费很多时间来执行为什么?

时间:2015-11-27 06:29:36

标签: php mysql

所以我想知道为什么花这么多时间。

我的查询是

SELECT prd.product_id,prd.product_name,
      (prd.product_price+po.additional_price) AS product_price,
       prd.date_added,po.discount,cat.category_name,payment_status,
      (SELECT COUNT(pi.product_impression_id) 
         FROM product_impression pi 
        WHERE pi.product_id = prd.product_id) AS impression_count 
  FROM products prd 
  INNER JOIN product_options po 
  ON po.product_id = prd.product_id 
  AND po.default_option = 'YES' 
  INNER JOIN categories cat 
  ON prd.product_category = cat.category_id 
  WHERE prd.product_artist_id = 103 
  ORDER BY prd.product_id DESC

当我删除以下代码表单查询时,没有问题。

(SELECT COUNT(pi.product_impression_id) 
 FROM product_impression pi 
 WHERE pi.product_id = prd.product_id) AS impression_count

请告诉我为什么?

1 个答案:

答案 0 :(得分:2)

我们可以在oracle中使用解释计划来查找查询的执行计划,即表格的扫描类型。例如:全表扫描,索引唯一扫描等。

尝试使用解释找到上述查询的执行计划。

检查索引是否被使用,并发布解释的输出,以便我们进一步分析。

感谢