前言中,此查詢將db_links用於oracle環境,目前正在TOAD中針對SQL Server數據庫執行。SQL Server - 查詢花費很長時間使用硬編碼日期
我最初有一些日期變量,用戶可以輸入日期範圍,當使用這些變量時,查詢在15秒內執行。當我手動插入變量的同一日期進行硬編碼時,查詢現在需要3.5分鐘。
爲什麼我的查詢從15秒變爲3.5分鐘,而不是使用日期變量來硬編碼日期?
這裏是下面的查詢:
select TRANS.FGBTRNH_DOC_CODE,
'' "calc1",
TRANS.FGBTRNH_TRANS_DESC,
case when TRANS.FGBTRNH_DR_CR_IND = 'C' then TRANS.FGBTRNH_TRANS_AMT *-1
when TRANS.FGBTRNH_DR_CR_IND = 'D' then TRANS.FGBTRNH_TRANS_AMT
end "calc2",
CAST(TRANS.FGBTRNH_TRANS_DATE AS DATE) "calc3"
from [BANTEST.UNWSP.EDU]..FIMSMGR.FGBTRNH TRANS
inner join [BANTEST.UNWSP.EDU]..FIMSMGR.FABINVH INVOICE on TRANS.FGBTRNH_DOC_CODE = INVOICE.FABINVH_CODE
where TRANS.FGBTRNH_ACCT_CODE = '19000'
and TRANS.FGBTRNH_TRANS_DATE between convert(date,'08/01/2013') and convert(date,'08/31/2013')
and TRANS.FGBTRNH_DOC_CODE not like 'J%'
and TRANS.FGBTRNH_TRANS_DESC not like '%AMAZON%'
and TRANS.FGBTRNH_POSTING_PERIOD <>'00'
and (TRANS.FGBTRNH_RUCL_CODE not like 'CA%'
and TRANS.FGBTRNH_RUCL_CODE not like 'Y%')
當我使用變量的條件語句是這樣的:
和TRANS.FGBTRNH_TRANS_DATE之間:日期1和:date2的
蟾蜍則提示爲什麼的價值:date1和:date2
而且該聲明在第二次執行中也使用相同的硬編碼日期也需要很長時間? – 2014-09-04 13:43:18