需求:按年度和省划分的计费记录个数。
Database: 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;
创建的是一个时间戳列。
由于查询中没有where子句,查询变得很慢。请让我知道,如果有任何方法,我可以优化查询。
谢谢大家,
我现在可以提取报告,谢谢你的建议。
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不支持解释计划,因此不能提供。