tabela mysql join levando muito tempo, enquanto simples selecione resultados rápidos

votos
-1

Eu tenho uma tabela InnoDB daily_sales_msr.

Quando eu executar uma consulta dessa tabela sem aderir, a consulta retorna a saída rapidamente.

Mas, se eu me juntar a essa mesa até mesmo com uma pequena mesa, em seguida, ele leva muito tempo. Qual é a solução para este problema?

Por exemplo:

SELECT
sku.ssku,
ROUND(SUM(daily_sales_msr.sale), 3) AS sale,
MONTHNAME(daily_sales_msr.date) AS `month`
FROM
daily_sales_msr
INNER JOIN sku ON sku.id = daily_sales_msr.skid
WHERE
daily_sales_msr.date BETWEEN '2018-08-01'
AND '2018-08-08'
GROUP BY
daily_sales_msr.skid

Esta consulta leva mais de 1000s.

Sem qualquer juntar leva apenas 0.15s.

Publicado 02/09/2018 em 05:26
fonte usuário
Em outras línguas...                            


1 respostas

votos
1

para o desempenho tenha certeza de ter índice adequado
no seu caso, você poderia usar um índice composto em

table daily_sales_msr for  columns  (skid,date) 

e para o SQL que você está usando GROUP BY mas alguns da coluna na selecione não no grupo não estão relacionados com a função de agregação esta na maior motor db e no mysql começando formulário 5.7 é notb alloed por defualt .. o resultado para estas colunas é imprevisível assim você deve adicionar essas colunas para agrupar por

SELECT
  sku.ssku,
  ROUND(SUM(daily_sales_msr.sale), 3) AS sale,
  MONTHNAME(daily_sales_msr.date) AS `month`
FROM  daily_sales_msr
INNER JOIN sku ON sku.id = daily_sales_msr.skid
WHERE  daily_sales_msr.date BETWEEN '2018-08-01'  AND '2018-08-08'
GROUP BY  daily_sales_msr.skid, month 

ou usar uma função de agregação também para estas colunas

SELECT
  sku.ssku,
  ROUND(SUM(daily_sales_msr.sale), 3) AS sale,
  MAX(MONTHNAME(daily_sales_msr.date)) AS `month`
FROM  daily_sales_msr
INNER JOIN sku ON sku.id = daily_sales_msr.skid
WHERE  daily_sales_msr.date BETWEEN '2018-08-01'  AND '2018-08-08'
GROUP BY  daily_sales_msr.skid
Respondeu 02/09/2018 em 06:31
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more