私は以下に示すクエリを持っています。私の疑いは、レコードの取得時間に関するものです。この方法よりもレコードを取得する方法はありますか?選択クエリの実行時間を短縮する方法
select product_code,product_name,price,taxPercentage,discount_type,discount_amount,prof it_type,profit_amount,purchase_code, qty
from (
select distinct p.product_code,p.product_name,pid.price,t.percentage as taxPercentage,p.discount_type,p.discount_amount,p.profit_type,p.profit_amount,
pu.purchase_code,pid.quantity+isnull(sum(sri.quantity),0) -isnull(sum(si.quantity),0) -isnull(sum(pri.quantity),0) as qty
from tbl_product p
left join tbl_purchase_item pid on p.product_code=pid.product_code
left join tbl_purchase pu on pu.purchase_code=pid.purchase_code
left join tbl_tax t on t.tax_code=p.tax_code
left join tbl_sale_item si on si.product_code=p.product_code
left join tbl_sale s on s.sale_code=si.sale_code
left join tbl_sale_return sr on sr.sale_code=s.sale_code
left join tbl_sale_return_item sri on sri.sale_return_code=sr.sale_return_code
left join tbl_purchase_return_item pri on pri.purchase_code=pu.purchase_code
group by p.product_code,p.product_name,pid.price,t.percentage,p.discount_type,p.discount_amount,p.profit_type,p.profit_amount,pu.purchase_code,pid.quantity
) as abc
where qty >0
がGROUP BYと組み合わせDISTINCT SELECTを検討? – jarlh
疑問?フェッチの時間は何ですか?あなたは実行計画/出力を確認しましたか? – jarlh
左結合が多すぎます。避けることができるDISTINCT節と、フィールドが多すぎるGROUP節です。これらの各テーブルのすべてのデータが本当に必要ですか?サブ問合せでは、qtyという名前の計算列をフェッチします。問合せの外側には、「WHERE qty = 0」を追加します。サブクエリにWHERE句を含めると、qtyが0の行がすべて削除されます。 質問を 'EXPLAIN '出力に更新してください。クエリの各セクションを使用してフェッチされた行の数が通知されます。 –