前言中,此查询将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