我有一个包含客户交易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模式。所以我无法实现任何解决方案
对于DB2为Z / OS,目录表在SYSIBM架构。
对于DB2用于Linux / UNIX / Windows的,目录视图在SYSCAT模式。
对于DB2对于i系列目录可在QSYS2模式。
对于DB2 z / OS版,看看SYSIBM.SYSCOLUMNS为你的表,其PARTKEY_COLSEQ具有非零在该范围的分区列的列。
该建议是查询的WHERE子句中使用分区列(S),假设该分区列(S)中至少有一个是你提到的TRANS_DATE列。
你需要知道什么是分区列是该表,然后添加一个一阶谓词(WHERE = ...或者WHERE ...和...之间),以您的查询“主”分区列提供这样的过滤确实是您查询的意图。