Я предлагаю использовать 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 по-прежнему является лучшей.