/ /私はこの選択ステートメントを高速化するための助けが必要です - mysql、sql、database、select、join

私はこの選択されたステートメントをスピードアップするための助けが必要です - mysql、sql、database、select、join

私はこの選択をスピードアップするための助けを探していますステートメント。私はこの声明に左のジョインをする必要があります。シンプルなジョインを行う(ジョイン、特に最初の2つのジョインでは、本当にスピードアップします)。すべてのLEFT JOINSを使用すると約33秒かかります。最初の2つのどちらかを通常のJOINSに変更すると、0.2秒かかります。最後をJOINに変更するには0.8秒かかります。これらのより迅速なソリューションは、私に必要なすべての結果を与えるわけではありません。

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

ここに私が設定したインデックスがあります。 ここに画像の説明を入力

回答:

回答№1は1

サブクエリを試すことができます:

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;

これは外側の集約を取り除きます。これは勝利でなければなりません。