我可以使用sql在AS400中创建“逻辑文件”吗?

时间:2011-01-30 09:14:37

标签: sql jdbc view db2 ibm-midrange

我需要创建as400“逻辑文件”。

我的应用程序使用jdbc连接到数据库。

是否可以使用sql语句创建“逻辑文件”?

如果是,我会很感激您的样本声明。

感谢

3 个答案:

答案 0 :(得分:5)

我建议使用绿屏STRSQL命令中的CREATE INDEX SQL命令。然后你可以提示它。这是一个CREATE INDEX示例,它让我可以更快地查询16 GB的文件。对于此示例,物理文件是数据库监视器的结果,而不是运行一周:

CREATE INDEX QGPL.QZG0000016_QUERYJOB ON QGPL.QZG0000016
(QQJNUM ASC, QQUSER ASC, QQJOB ASC, QQUCNT ASC, QQRID ASC, QQI5 ASC)

索引本身需要很长时间才能创建,但基于索引的后续查询非常快。

如果您需要加入多个表格,请提前计划。了解将用于连接表的字段以及针对连接表创建索引。你会得到你正在寻找的性能提升。例如,让我们构建一个查询来显示客户订购的商品:

SELECT ORDETAIL.ITEM_NAME, ORDETAIL.QUANTITY, ORHEADER.SHIPDATE
FROM ORHEADER
INNER JOIN ORDETAIL ON ORDETAIL.ORDERID = ORHEADER.ORDERID
WHERE ORHEADER.CUST_NUM = 123456

如果它们尚不存在,您可以制作以下索引:

CREATE INDEX DATALIB.ORHEADER_BY_CUSTOMER ON DATALIB.ORHEADER (CUST_NUM ASC, ORDERID)
CREATE INDEX DATALIB.ORDETAIL_BY_ORDER ON DATALIB.ORDETAIL (ORDERID)

如果需要创建逻辑文件select / omit criteria,则需要创建视图。但是,视图不是索引,并且您不能像使用带有选择/省略的键控逻辑那样混合索引和视图。为此,DDS规范仍然是最好的。

答案 1 :(得分:1)

如果您在视图中尝试订单,这将有所帮助,但如果您遇到性能问题则无法提供帮助。

数据样本basetable

A 
B 
C 
A 
A 
A 

查询:

create view myview1  as                   
select lib                                
from(                                     
  SELECT rank() over(order by lib), lib   
FROM basetable) a   

来自myview1

的数据样本
A 
A 
A 
A 
B 
C 

答案 2 :(得分:0)

为了达到同样的效果,我在AS / 400 DB2中的所有表上创建了数据库视图,将更易理解的名称映射到物理名称。我不认为视图逻辑文件,但我只是所述AS / 400的用户,并且根据需要与数据进行完全相同的信息。