如何减少调用数百万条记录的财务报告的运行时间?
该报告是一个程序,编写如下
Select * from
(
UNION 1
Select
Date,AccountName,CustomerName,sum(Debit-Credit) for currency 1, sum(Debit-Credit) for currency 2, sum(Debit-Credit) for currency 3
where date is between X and Y
grouping
UNION2
Select
Date,AccountName,CustomerName,sum(Debit-Credit) for currency 1, sum(Debit-Credit) for currency 2, sum(Debit-Credit) for currency 3
where date is <X and P1 = 1
UNION3
Select
Date,AccountName,BranchName,sum(Debit-Credit) for currency 1, sum(Debit-Credit) for currency 2, sum(Debit-Credit) for currency 3
where date is <X and P1 = 2
) A
END
P1指的是用户根据分支或客户名称进行分组的选择,我想到的第一件事是程序拉动所有3个联合然后过滤,所以我删除了2个底部联合并使其成为IF语句根据参数执行特定查询。
问题是Union 2用于开放平衡,它在参数日期之前提取所有内容,并且可能达到数百万条记录。
当然还有其他过滤标准,如客户,销售人员,分支机构等......但它们都是Crystal Reports级别,因为它们是可选参数。
任何建议都将不胜感激