0

要求:按年和省创建的计费记录数。

数据库: DB2 9.5

下面是用于获取详细信息的查询,它需要大量时间,超过 1 小时并且超时。

每个表中的记录数如下。计费:900 万覆盖:100 万客户:300 万地址:400 万。

select year(bill.created), addr.province,count(1) as yearprovicecount  from billing bill 
inner join cover cov  on ( bill.coveragecid = cov.coveragecid) 
inner join customer cust on (cust.customercid= cov.customercid)
inner join address addr on (cust.customercid=addr.customercid)
group by year(bill.created), addr.province;

Created 是一个时间戳列。

由于查询中没有where子句,查询变慢了。请让我知道是否有任何方法可以优化查询。

4

1 回答 1

0

谢谢各位,

我现在可以提取报告了,谢谢你的建议。

1.我删除了不需要的连接

2. 我添加了 where 子句来限制扫描的行数。

select year(bill.created), addr.province,count(1) as yearprovicecount  from billing bill 
inner join cover cov  on ( bill.coveragecid = cov.coveragecid) 
-- inner join customer cust on (cust.customercid= cov.customercid)
inner join address addr on (cust.customercid=addr.customercid)
where year(billhis.created) = 2014
group by year(bill.created), addr.province;

注意:当前版本的 DB 9.5 不支持解释计划,因此无法提供。

于 2014-06-17T12:47:35.507 回答