需要使用group by timestamp优化DB2中的慢查询

时间:2014-06-16 19:26:05

标签: sql optimization db2 sql-tuning query-tuning

要求:年份和省份创建的结算记录数。

数据库: 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子句,因此查询变慢。如果有任何方法可以优化查询,请告诉我。

1 个答案:

答案 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不支持解释计划,因此无法提供。