Могу ли я создать "логические файлы" в AS400 с помощью SQL? - PullRequest
1 голос
/ 30 января 2011

Мне нужно создать as400 "логические файлы".

мое приложение подключается к БД с помощью jdbc.

Можно ли создавать "логические файлы" с помощью операторов sql?

Если да, я был бы признателен за пример оператора.

спасибо

Ответы [ 3 ]

5 голосов
/ 31 января 2011

Я предлагаю использовать SQL-команду CREATE INDEX из зеленой команды STRSQL. Тогда вы можете подсказать это. Вот пример CREATE INDEX, который позволяет мне запрашивать 16-гигабайтный файл намного быстрее. В этом примере физический файл был результатом монитора базы данных, который работал в течение недели:

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 / omits. Для этого спецификация DDS по-прежнему является лучшей.

1 голос
/ 28 февраля 2012

Это поможет, если вы пытаетесь сделать заказ по вашему мнению, но не очень поможет, если у вас есть проблемы с производительностью.

Образец данных 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 
0 голосов
/ 30 января 2011

Чтобы добиться почти того же эффекта, я создал представления базы данных для всех таблиц в AS / 400 DB2, сопоставляя более понятные имена с физическими.Я не думаю, что представления являются логическими файлами, но я просто пользователь AS / 400 и точно знаю о нем столько, сколько нужно для взаимодействия с данными.

...