Запрос idh_hist очень медленный при поиске по дате

Я пытаюсь написать запрос для поиска в таблице счетов MFG/PRO 'idh_hist' для определенного диапазона дат. Он работает очень медленно, когда добавлено условие даты. Но когда я откладываю условие даты, это очень быстро. Можете ли вы предложить способы написания запроса на idh_hist, который выполняется довольно быстро с условиями.

Ниже мой запрос:

for each idh_hist no-lock where idh_domain = "d0002"
                            and idh_due_date = TODAY:

    /* display code here... */

end. 

Заранее спасибо!

Индекс базы данных:

Flags Index Name              Cnt   Field Name
----- ---------------------  ----   ---------------------
      idh_fsm_type             4    + idh_domain
                                    + idh_fsm_type
                                    + idh_nbr
                                    + idh_line

pu    idh_invln                4    + idh_domain
                                    + idh_inv_nbr
                                    + idh_nbr
                                    + idh_line

      idh_part                 4    + idh_domain
                                    + idh_part
                                    + idh_inv_nbr
                                    + idh_line

u     oid_idh_hist             1    + oid_idh_hist 

1 ответ

Решение

У вас, кажется, нет индекса, который использует idh_due_date. Вам нужно будет добавить такой индекс.

4gl использует правила для выбора индексов на основе предложения WHERE. Самое важное правило заключается в том, что будут использоваться ведущие компоненты индекса, которые имеют совпадения равенства.

У показанного вами запроса есть только одно такое совпадение для idh_domain. Так что тогда применяются правила разрыва связи. Это приведет к выбору индекса idh_invln.

Таким образом, чтобы удовлетворить ваш запрос, все записи, которые соответствуют полю "idh_domain", должны быть найдены. (Если у вас есть только один домен, это означает, что вы выполняете сканирование таблицы.)

Вы, вероятно, хотите добавить индекс для idh_domain и idh_due_date. Это было бы идеально подходит для вашего запроса.

Другие вопросы по тегам