慢的80多秒,快的不到一秒求大神围观.............................................啥都不说了 直接上图
查询语句:
SELECT
orderflow0_.order_flow_no AS col_0_0_, user1_.user_code AS col_1_0_,
user1_.user_name AS col_2_0_, orderflow0_.order_amount AS col_3_0_,
orderflow0_.order_time AS col_4_0_, orderflow0_.order_type_code AS col_5_0_,
( SELECT parameterc2_.param_name FROM  pl_parameter_code_t parameterc2_
WHERE  parameterc2_.param_code = orderflow0_.order_type_code AND parameterc2_.param_type = 'order_type_code'
)  AS col_6_0_,
( SELECT parameterc3_.param_name FROM pl_parameter_code_t parameterc3_
WHERE parameterc3_.param_code = orderflow0_.payment_code AND parameterc3_.param_type = 'payment_code'
) AS col_7_0_
FROM
pl_order_flow_t orderflow0_
CROSS JOIN pl_user_t user1_
WHERE
orderflow0_.order_type_code = 'RECHARGE'
AND orderflow0_.operator_id = 101039
AND orderflow0_.refund_flag = 0
AND orderflow0_.staff_code = '36110'
AND orderflow0_.user_id = user1_.user_id
AND user1_.user_status = 0ORDER BY  orderflow0_.order_time DESC
LIMIT 3
执行计划:
orderflow0_索引:当orderflow0_.operator_id = 101039 这个条件等于其他的ID时非常快(不到一秒),就这个慢(应该还有其他的ID会慢,没有一个一个找)  而且和order_flow的读取行数无关

解决方案 »

  1.   

    和order_flow的读取行数无关?慢的和快的,返回行数分别是多少
      

  2.   

    去掉 orderflow0_.staff_code = '36110' 这个条件,  速度变快了 (和其他的一样)
    去掉ORDER BY  orderflow0_.order_time DESC ,速度也变快(和其他的一样)
      

  3.   


    第一个慢的用了索引index_3,第2和3个用的索引index_2执行计划不同
      

  4.   

    对了,你可以对上面慢的语句,强制使用索引 index_2