Как я могу сократить время выполнения представления? - PullRequest
0 голосов
/ 05 июля 2018

Вот мой запрос:

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 голосов
/ 05 июля 2018
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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...