Проблема производительности DB2 при выполнении запроса выбора - PullRequest
0 голосов
/ 03 июля 2019

У меня есть этот запрос:

SELECT INVOICE_NUMBER, INVOICE_SEQ_NUMBER, FILE_NUMBER, MAX(INVOICE_SEQ_NUMBER) OVER (PARTITION BY INVOICE_NUMBER) AS MAX_INV_SEQ_NUM
FROM (SELECT A.INVOICE_NUMBER, A.INVOICE_SEQ_NUMBER, B.FILE_NUMBER,
             DENSE_RANK() OVER (ORDER BY A.INVOICE_NUMBER) as seqnum
      FROM TABLE1 A JOIN
           TABLE2 B 
           ON A.INVOICE_NUMBER = B.INVOICE_NUMBER AND 
              A.INVOICE_SEQ_NUMBER = B.INVOICE_SEQ_NUMBER
     ) t
WHERE seqnum <= 500;

Он работал нормально с 10000 записями в таблицах, но мы добавили больше сегодня (+ 30k) и планируем добавить еще больше (+ 250-300k) кТаблица.Теперь я получаю эту ошибку:

DB2 SQL Error: SQLCODE=-905, SQLSTATE=57014, SQLERRMC=ASUTIME;000000000007;000000009000;SYSTEM PARAMETER, DRIVER=3.65.77

Неправильно ли выполнен запрос или он не оптимизирован для таблиц с большим количеством записей?Как мы должны справиться с этим?Индексировать некоторые столбцы или реструктурировать запрос?

ОБНОВЛЕНИЕ: очевидно, я ошибся в количестве записей, добавленных в таблицу, в этот момент у нас есть 2 миллиона записей в TABLE1 и 4 миллиона записей в TABLE2, вместо 30k, которые я упоминал изначально.

...