2016-08-11 7 views
0

Я пытаюсь написать запрос для поиска по таблице счетов MFG/PRO 'idh_hist' для определенного диапазона дат. Он работает очень медленно, когда добавляется условие даты. Но когда я откладываю условие даты, это очень быстро. Можете ли вы предложить способы написать запрос на 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 
+0

Можете ли вы поделиться с нами указателями индекса в таблице idh_hist? –

+0

Привет @MikeFechner, я добавил индекс здесь. Благодарю. –

ответ

1

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

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

Запрос, который вы показали, имеет только одно такое совпадение в idh_domain. Таким образом, применяются правила прерывания связи. Это приведет к выбору идентификатора idh_invln.

Как бы то ни было, чтобы удовлетворить ваш запрос, необходимо выполнить поиск всех записей, соответствующих полю «idh_domain». (Если у вас есть только один домен, который означает, что вы выполняете сканирование таблицы.)

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

+0

Большое спасибо @Tom. BTW, могу ли я добавить пользовательский индекс в стандартные таблицы QAD? –

+0

Для этого нет технических препятствий. Только FUD помешает вам. –