我需要优化MySQL查询

时间:2013-12-06 06:24:41

标签: mysql select query-optimization

我在MySQL DB上运行查询并且速度很慢。

无论如何我可以优化以下

SELECT mcm.merchant_name,
   ( ( Sum(ot.price) + Sum(ot.handling_charges)
       + Sum(ot.sales_tax_recd)
       + Sum(ot.shipping_cost) - Sum(ot.sales_tax_payable) ) -
     Sum(im.break_even_cost) ) AS PL,
   ot.merchant_id
   FROM   order_table ot,
          item_master im,
          merchant_master mcm
   WHERE  ot.item_id = im.item_id
   AND ot.merchant_id = mcm.merchant_id
   GROUP  BY mcm.merchant_name
   ORDER  BY pl DESC
   LIMIT  0, 10; 

上面的查询执行时间超过200秒。

解释结果:

id  select_type table   type    possible_keys           key         key_len     ref                     rows        Extra   
1   SIMPLE      ot      ALL     "merchant_id,item_id"   NULL        NULL        NULL                    507910      "Using temporary; Using filesort"
1   SIMPLE      mcm     eq_ref  "PRIMARY,merchant_id"   PRIMARY     4           stores.ot.merchant_id   1   
1   SIMPLE      im      eq_ref  "PRIMARY,item_id"       PRIMARY     4           stores.ot.item_id       1   

另外,当我运行EXPLAIN EXTENDED时,我得到了Error-1003

1 个答案:

答案 0 :(得分:1)

使用mysql explain计划找出为什么花了这么长时间,然后创建一些索引或更改代码。

<强>更新 基于此,请确保您在merchant_id,item_id

上的order_table上有一个综合索引