在特定表分区上运行SQL查询的DB2 z / os

时间:2019-02-06 08:24:40

标签: sql db2

我有一个包含客户交易记录的db2表。

该表大约有5亿条记录,当我尝试在BETWEEN之间运行选择查询时 查询运行的特定日期。 该公司的DBA告诉我,如果我可以在SQL中指定分区,它将运行得更快。

所以问题是: 如果我有下表,其名称为Cust_Trans 使用以下列

Cust_Num, Trans_Date, Trans_Type, Trans_Value + 30 more columns

我可以对以下SQL查询进行哪些更改,以便将其定位到特定分区?

Select *

From Cust_Trans

搜索论坛和IBM文档 我找到了涉及SYSCAT模式和datapartitionnum函数的解决方案

但是我的DB2版本没有SYSCAT模式 但只有SYSIBM模式。 所以我无法实施任何解决方案

2 个答案:

答案 0 :(得分:2)

您需要知道该表的分区列是什么,然后在查询“主”分区列时添加一阶谓词(WHERE = ...或WHERE BETWEEN ... AND ...) 提供 这样的过滤确实是您查询的目的。

答案 1 :(得分:1)

对于Db2 for Z / OS,目录表位于SYSIBM模式中。

对于用于Linux / Unix / Windows的Db2,目录视图位于SYSCAT模式中。

对于Db2 for i系列,目录可能位于QSYS2模式中。

对于Zb / OS版Db2,请查看SYSIBM.SYSCOLUMNS表,其PARTKEY_COLSEQ非零的列是范围分区列。

建议在查询的WHERE子句中使用分区列,并假定至少有一个分区列是您提到的trans_date列。