SQLクエリがあり、レポートのデータを取得するために使用されています。それは機能します、ちょうどそれがプログラムを報告書を引っ張るのに長時間かかります。このSQLを最適化する方法はありますか? SYSPROD1という名前のリンクサーバーを使用して、複数のサブクエリを持つSELECTクエリです。私は試しましたが、成功しませんでした。リンクされたサーバーでのSQLクエリの最適化
Select
invMaster.StockCode, prodclass.[Description], invMaster.LongDesc,
(select inv.QtyOnHand from SYSPROD1.SysproCompanyD.dbo.InvWarehouse inv where inv.StockCode = invMaster.StockCode and inv.Warehouse = 'P4') as CSSJHB,
(select inv.QtyOnHand from SYSPROD1.SysproCompanyD.dbo.InvWarehouse inv where inv.StockCode = invMaster.StockCode and inv.Warehouse = 'KK') as KFCJHB,
(select inv.QtyOnHand from SYSPROD1.SysproCompanyD.dbo.InvWarehouse inv where inv.StockCode = invMaster.StockCode and inv.Warehouse = 'KF') as KFCMIDRAND,
(select inv.QtyOnHand from SYSPROD1.SysproCompanyD.dbo.InvWarehouse inv where inv.StockCode = invMaster.StockCode and inv.Warehouse = 'QK') as QKJHB,
(select inv.QtyOnHand from SYSPROD1.SysproCompanyD.dbo.InvWarehouse inv where inv.StockCode = invMaster.StockCode and inv.Warehouse = 'SD') as SDBBLOEM,
(select inv.QtyOnHand from SYSPROD1.SysproCompanyD.dbo.InvWarehouse inv where inv.StockCode = invMaster.StockCode and inv.Warehouse = 'SL') as SEQUENCE,
(select inv.QtyOnHand from SYSPROD1.SysproCompanyD.dbo.InvWarehouse inv where inv.StockCode = invMaster.StockCode and inv.Warehouse = 'PA') as CSSCT,
(select inv.QtyOnHand from SYSPROD1.SysproCompanyD.dbo.InvWarehouse inv where inv.StockCode = invMaster.StockCode and inv.Warehouse = 'VL') as CSGEORGE
from
SYSPROD1.SysproCompanyD.dbo.InvMaster invMaster join SYSPROD1.SysproCompanyD.dbo.SalProductClass prodclass
on invMaster.ProductClass = prodclass.ProductClass
where prodclass.[Description] in ('WHOLEBIRDS','ABI & OTHER', 'CATERING PORTIONS', 'FILLETED PRODUCTS', 'FRESH PRODUCTS','INDUSTRIAL CATERING', 'IQF PORTIONS', 'LOW VALUE FIXED MASS', 'RED MEAT', 'REJECT EGGS' ,'SUNDRY PRODUCTS','VALUE ADDED')
group by invMaster.StockCode, prodclass.[Description], invMaster.LongDesc
order by prodclass.[Description], invMaster.StockCode asc
リンクサーバー上のビューを作成し、それを素晴らしいと呼んでくれてありがとうございました。それは、それがイニシャル全体の約1/10になりました。 – Scott
私のローカルサーバー上の一時テーブルは完全に私のために働いた。非常に迅速に実行されたtempテーブルに必要な行のSELECT INTOを実行した後、一時テーブルを使用してローカルテーブルに結合しました。良いヒント! –