在一个特定的表分区中运行SQL查询DB2 z / OS版

问题描述 投票:0回答:2

我有一个包含客户交易DB2表。

此表是大约500万条记录,当我尝试运行特定日期之间选择查询的查询运行较长的时间。该公司的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模式。所以我无法实现任何解决方案

sql db2
2个回答
1
投票

对于DB2为Z / OS,目录表在SYSIBM架构。

对于DB2用于Linux / UNIX / Windows的,目录视图在SYSCAT模式。

对于DB2对于i系列目录可在QSYS2模式。

对于DB2 z / OS版,看看SYSIBM.SYSCOLUMNS为你的表,其PARTKEY_COLSEQ具有非零在该范围的分区列的列。

该建议是查询的WHERE子句中使用分区列(S),假设该分区列(S)中至少有一个是你提到的TRANS_DATE列。


2
投票

你需要知道什么是分区列是该表,然后添加一个一阶谓词(WHERE = ...或者WHERE ...和...之间),以您的查询“主”分区列提供这样的过滤确实是您查询的意图。

© www.soinside.com 2019 - 2024. All rights reserved.