我有目的的查詢來查找表item_location記錄,並在表operation_detail不存在了一年中的特定月份查詢超時使用NOT EXIST
SELECT il.item_id,
il.SEQUENCE,
SUM (il.quantity) AS quantity,
i.buy_price,
i.sell_price, i.item_name, i.unit_measure_id,
i.is_raw_item AS is_raw
FROM item_location il, item i
WHERE il.quantity <> 0
AND il.item_id = i.item_id
AND il.SEQUENCE = i.SEQUENCE
AND NOT EXISTS (
SELECT od.*
FROM operation_detail od, operation_header oh, rt_operation o
WHERE od.item_id = il.item_id
AND od.SEQUENCE = il.SEQUENCE
AND od.operation_header_id = oh.operation_header_id
AND oh.operation_type_id = o.operation_type_id
AND o.operation_stock IN ('I', 'O')
AND MONTH (oh.operation_date) = @MONTH
AND YEAR (oh.operation_date) = @YEAR)
GROUP BY il.item_id,
il.SEQUENCE,
i.buy_price,
i.sell_price,
i.item_name,
i.unit_measure_id,
i.is_raw_item
注意,從.net
平臺上運行此查詢使用DataAdapter
給超時,從SQL運行它帶到40年代
我主要是概率超時....任何建議
對operation_detail,operation_header和rt_operation任何索引? – hkutluay 2013-03-27 07:25:17
曾經看過執行計劃嗎? – 2013-03-27 07:27:08
你正在使用什麼數據庫系統? – 2013-03-27 08:28:00