/ / Preciso de ajuda para acelerar esta instrução select - mysql, sql, database, select, join

Preciso de ajuda para acelerar esta instrução select - mysql, sql, database, select, join

Estou à procura de ajuda para acelerar este selectdeclaração. Eu preciso fazer junções à esquerda nesta declaração que fez com que ela realmente atolasse. Fazer uma junção simples (em qualquer uma das junções, especialmente as duas primeiras, realmente acelera as coisas). Usando todos os JOINS ESQUERDOS leva cerca de 33 segundos. Alterar qualquer um dos dois primeiros para JOINs regulares leva 0,2 segundos. Mudar o último para um JOIN leva 0,8 segundos. Qualquer uma dessas soluções mais rápidas não me dá todos os resultados que eu preciso.

SELECT
i.id, i.part_number, v.name, i.description, sum(oi.quantity) as count, i.filename, "0"
FROM
inventory i
LEFT JOIN
order_items_part_numbers o
ON i.id = o.inventory_id
LEFT JOIN order_items oi
ON oi.id = o.order_items_id
LEFT JOIN vendors v
ON v.id = i.vendor_id
WHERE
i.deleted = 0 GROUP BY i.part_number

Aqui estão os índices que eu configurei. insira a descrição da imagem aqui

Respostas:

1 para resposta № 1

Você pode tentar usar uma subconsulta:

SELECT i.*, v.name,
(SELECT SUM(oi.quantity)
FROM order_items_part_numbers o JOIN
order_items oi
ON oi.id = o.order_items_id
WHERE i.id = o.inventory_id
) as count, "0"
FROM inventory i LEFT JOIN
vendors v
ON v.id = i.vendor_id
WHERE i.deleted = 0;

Isso elimina a agregação externa, que deveria ser uma vitória.