Db2查询花费了太多时间

时间:2017-02-04 12:59:01

标签: sql indexing db2 partitioning

我有一项任务是从特定年份的某些员工那里获取表中的数据,但查询大约需要。 50分钟可获得5万张军事记录。

表约有。 60亿(6 * 10 ^ 9)数据

查询:

select a, b
from t1
where t1.year in (2012,2013) and
      t1.name in (select name from name_tab fetch first 50000 rows only)

Partitioned table: t1
partitioned col: t1.year

Index col: t1.name

我检查了Access计划,并惊讶地发现分区和索引都没有被使用。

1 个答案:

答案 0 :(得分:0)

首先,尝试此查询:

select a, b
from t1
where t1.year = 2012 and
      t1.name in (select name from name_tab fetch first 50000 rows only)

它识别分区吗?如果是,请尝试将查询编写为:

select a, b
from t1
where t1.year = 2012 and
      t1.name in (select name from name_tab fetch first 50000 rows only)
union all
select a, b
from t1
where t1.year = 2013 and
      t1.name in (select name from name_tab fetch first 50000 rows only)

您可能希望在子查询中放置order by,因此保证名称相同。

然后,在name_tab(name)上添加一个索引。