0
試圖更新包含放在庫存數據表時,我面臨一個很大的問題加入了含表的產品分類加盟。此操作需要很長時間才能執行。長時間exection在SQL Server 2008
表dw_giacenze(具有等於T flag_nomatch參數)一上內與ecat_key字段dw_key_prodž加入放置。 a包含高達3千萬記錄,z 150k記錄。 執行時間超過2小時。
在我正在使用的更新查詢之下。
update dw_giacenze
set cate_ecat_key = z.cate_ecat_key,
sottocat_ecat_key = z.sottocat_ecat_key,
marchio_key = z.marchio_key,
sottocat_bi_key = z.sottocat_bi_key,
gruppo_bi_key = z.gruppo_bi_key,
famiglia_bi_key = z.famiglia_bi_key,
flag_nomatch = NULL
from dw_giacenze a
inner join dw_key_prod z on
z.ecat_key = a.ecat_key
where
a.flag_nomatch = 'T';
任何人都可以幫助我優化它嗎? 在此先感謝!
恩里科
顯示您的查詢計劃。菜單「查詢」,「顯示預計執行計劃」。 –
dw_giacenze是否有許多需要更新的索引?具有相同表和條件的SELECT查詢是否也需要很長時間才能運行?你在這兩個表中的ecat_key上有任何索引,並且在flag_nomatch上有索引嗎? –
嗨大衛,我進行查詢執行計劃和SQL Server說/ * 缺少從SQLQuery4.sql索引詳細信息 - 46.51.199.197.EURDB-DEV(EUR-DEV(53)) 查詢處理器估計,實現以下指標可以將查詢成本提高96.6899%。 */ /* USE [EURDB-DEV] GO CREATE NONCLUSTERED INDEX ON [DBO]。[dw_giacenze]([flag_nomatch]) INCLUDE([ecat_key [<缺失索引,sysname類型,名稱>] ]) GO */ – user1085912