如何减少视图的执行时间?

时间:2018-07-05 07:40:01

标签: mysql sql performance

这是我的查询:

select count(1) AS `number`,
       `pronexo_pronexo`.`unique_products`.`product_id` AS `product_id`,
       `pronexo_pronexo`.`products`.`name` AS `name`
from ( `pronexo_pronexo`.`unique_products`
join `pronexo_pronexo`.`products` 
on((`pronexo_pronexo`.`unique_products`.`product_id` = `pronexo_pronexo`.`products`.`id`)))
where isnull(`pronexo_pronexo`.`unique_products`.`exit_time`)
group by `pronexo_pronexo`.`unique_products`.`product_id`

这是EXPLAIN的结果:

enter image description here

任何想法都应该在哪个列上创建索引以使其更快?现在大约需要3秒钟才能执行。顺便说一下,目前数据还不是很大。

1 个答案:

答案 0 :(得分:0)

select  count(1) AS `number`,
        u.`product_id`,
        p.`name`
    from  `pronexo_pronexo`.`unique_products` AS u
    join  `pronexo_pronexo`.`products` AS p
      on  u.`product_id` =  p.`id`
     where  isnull(u.`exit_time`)
    group by  u.`product_id`

isnull(u.exit_time)更改为u.exit_time IS NULL

INDEX(exit_time, product_id)添加到unique_products

products中,如果未索引id,请对其进行索引。

为进一步讨论,请提供SHOW CREATE TABLE