私はこの選択をスピードアップするための助けを探していますステートメント。私はこの声明に左のジョインをする必要があります。シンプルなジョインを行う(ジョイン、特に最初の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;
これは外側の集約を取り除きます。これは勝利でなければなりません。