要求:年份和省份创建的结算记录数。
数据库: DB2 9.5
以下是用于获取详细信息的查询,它花费了大量时间,超过1小时并且获得了timedout。
每张表中的记录数如下。 账单:9百万 封面:1百万 客户:3百万 地址:4百万。
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子句,因此查询变慢。如果有任何方法可以优化查询,请告诉我。
答案 0 :(得分: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不支持解释计划,因此无法提供。