Гость
Форумы / Oracle APEX [игнор отключен] [закрыт для гостей] / Запрос в APEX работает медленнее чем в PL*SQL Developere (не используется индекс?) / 3 сообщений из 3, страница 1 из 1
22.12.2009, 15:38
    #36380178
VladIg
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос в APEX работает медленнее чем в PL*SQL Developere (не используется индекс?)
Вот такая табличка
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
-- Create table
create table ESS.EXT_LOG
(
  CHARGE_TYPE NUMBER,
  ANUM        VARCHAR2( 50 ),
  CDATE       DATE,
  CDUR        DATE,
  CSUM        NUMBER,
  DIR_ID      NUMBER,
  DIR_NAME    VARCHAR2( 150 ),
  CNUM        VARCHAR2( 50 ),
  DOG_NMB_ID  NUMBER,
  PROV_ID     NUMBER,
  LDATE       DATE default sysdate,
  ATR         VARCHAR2( 10 ),
  INS_NMB     VARCHAR2( 10 ),
  DST_ROWID   ROWID,
  NAPR_ID     NUMBER,
  YEAR        NUMBER,
  MONTH       NUMBER,
  DAY         NUMBER
)
-- Create/Recreate indexes 
create index ESS.ALL_IND on ESS.EXT_LOG (CDATE, ANUM, CNUM, CDUR)
  tablespace USERS
  pctfree  10 
  initrans  2 
  maxtrans  255 
  storage
  (
    initial 64K
    minextents  1 
    maxextents unlimited
  )
  compress  1 ;

create bitmap index ESS.DATE_SIC on ESS.EXT_LOG (YEAR, MONTH, DAY)
  tablespace USERS
  pctfree  10 
  initrans  2 
  maxtrans  255 
  storage
  (
    initial 64K
    minextents  1 
    maxextents unlimited
  );

create bitmap index ESS.DM_BIT on ESS.EXT_LOG (TO_CHAR(CDATE,'rrmm'))
  tablespace USERS
  pctfree  10 
  initrans  2 
  maxtrans  255 
  storage
  (
    initial 64K
    minextents  1 
    maxextents unlimited
  );

create index ESS.INDCDURE on ESS.EXT_LOG (CDUR)
  tablespace USERS
  pctfree  10 
  initrans  2 
  maxtrans  255 
  storage
  (
    initial 64K
    minextents  1 
    maxextents unlimited
  );

create index ESS.INDCNUME on ESS.EXT_LOG (CNUM)
  tablespace USERS
  pctfree  10 
  initrans  2 
  maxtrans  255 
  storage
  (
    initial 64K
    minextents  1 
    maxextents unlimited
  );

create bitmap index ESS.INDDATEE on ESS.EXT_LOG (CDATE)
  tablespace USERS
  pctfree  10 
  initrans  2 
  maxtrans  255 
  storage
  (
    initial 64K
    minextents  1 
    maxextents unlimited
  );

На данный момент 1,2 млн строк. Представляет собой Логи операторов связи.
Запрос вида
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
select --+ index(ess.ext_log all_ind)
  лог.anum,
  лог.cnum,
  лог.cdate st_zv,
  лог.cdur dlit,
  лог.csum,
  NVL(to_char(лог.dir_id),'') dir_id,
  лог.dir_name
from ess.ext_log лог
where
  лог.prov_id= 2 --:P51_find_prov
  and лог.dog_nmb_id=DeCode(/*:P51_find_dog*/ 0 , 0 ,лог.dog_nmb_id,/*:P51_find_dog*/ 0 )
  and лог.cdate between to_date('01.10.2009 00:00:00','dd.mm.rrrr hh24:mi:ss') and to_date('02.11.2009 00:00:00','dd.mm.rrrr hh24:mi:ss')

Отрабатывает в Developere порядка 1-2 секунд, в APEX вывод затягивается на 8-12 секунд.
Как можно добиться большей скорости работы?
Написание или ненаписание хинтов для принудительного использования индекса не влияет на скорость.

Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - 64bit Production
Application Express 3.2.1.00.10
...
Рейтинг: 0 / 0
22.12.2009, 16:27
    #36380325
suPPLer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос в APEX работает медленнее чем в PL*SQL Developere (не используется индекс?)
VladIg,

Для начала - включите DEBUG в APEX, убедитесь, что 8-12 секунд выполняется именно запрос. Затем Вам сюда . Сразу посоветую сделать трассировку выполнения запроса в PL/SQL Developer и в APEX, а затем выложить результаты.
...
Рейтинг: 0 / 0
23.12.2009, 07:43
    #36381254
VladIg
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос в APEX работает медленнее чем в PL*SQL Developere (не используется индекс?)
suPPLer,
Ай спасибо, действительно не туда смотрел.
Основное время занимала не отработка запроса.
Балагодарю, с Наступающим и всех благ.
...
Рейтинг: 0 / 0
Форумы / Oracle APEX [игнор отключен] [закрыт для гостей] / Запрос в APEX работает медленнее чем в PL*SQL Developere (не используется индекс?) / 3 сообщений из 3, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]