【发布时间】:2014-10-29 06:51:00
【问题描述】:
首先,此查询使用 db_links 进入 oracle 环境,目前正在 TOAD 中针对 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 在 :date1 和 :date2 之间
然后,Toad 会提示 :date1 和 :date2 的值是什么
【问题讨论】:
-
而且语句在第二次执行时使用相同的硬编码日期也需要很长时间?
标签: sql sql-server oracle performance dblink