我需要创建as400“逻辑文件”。
我的应用程序使用jdbc连接到数据库。
是否可以使用sql语句创建“逻辑文件”?
如果是,我会很感激您的样本声明。
感谢
答案 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的用户,并且根据需要与数据进行完全相同的信息。