Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Oracle APEX [игнор отключен] [закрыт для гостей] / Медленно работает LOV в IR , возвращяющий большой объем данных / 25 сообщений из 27, страница 1 из 2
22.09.2015, 12:29
    #39058203
Arrisio
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Медленно работает LOV в IR , возвращяющий большой объем данных
Добрый день, Коллеги

Вопрос новичка. Видел обсуждение проблем подобных моей в.т.ч на этом форуме, но решения для себя пока не нашел. Если что-то посмотреть ,пожалуйста не кидайте тапками ))

Требуется создать IR, фильтрация ряда заголовков которого осуществляется выбором значений из LOV . Последний делает выборку из табицы с сотрудниками (10k-20k записей) и отпрабатыввает достаточно долго (~30 сек).

Сам запрос
Код: plsql
1.
2.
3.
select distinct FULL_NAME as display_value, FULL_NAME as return_value 
FROM S_PEOPLE
WHERE FULL_NAME is not null AND STATUS='Active'



Колонки в условии запроса проиндексированы. Притом cost sql-запроса LOV 280 и БД отрабатывать его должна быстро, учитывая , что бд крутится на достаточно производительном железном сервере.

скрин debug-а приложен

Проблема актуальна для Apex5.0.1+ORDS+Tomcat7+RHEL , для Apex4.2+PL/SQL Gateway+OEL
Замечено, что включение на томкате компрессии трафика уменьшает время отработки тяжелых LOV на 20-30%. Увеличение или уменьшение объема возвращаемых данных (меньше кол-во строк, возвращать логин, а не фио), пропорционально уменьшают время отрабатывания

Может быть вы знаете варианты, как заставить LOV выводить список сотрудников за приемлемое время (не более нескольких секунд)? Или чтоб он начинал искать после пары введенных букв?
...
Рейтинг: 0 / 0
22.09.2015, 13:53
    #39058345
blkangel
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Медленно работает LOV в IR , возвращяющий большой объем данных
Arrisio,

Сразу бросается в глаза кривой ЛОВ, зачем выводить на экран и возвращать одно и тоже?
Код: plsql
1.
2.
3.
select distinct FULL_NAME as display_value, FULL_NAME as return_value 
FROM S_PEOPLE
WHERE FULL_NAME is not null AND STATUS='Active'



Это может только означать, что в основном запросе у вас уже выводится ФИО, тогда зачем использовать ЛОВ?
...
Рейтинг: 0 / 0
22.09.2015, 14:25
    #39058394
Arrisio
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Медленно работает LOV в IR , возвращяющий большой объем данных
Это может только означать, что в основном запросе у вас уже выводится ФИО, тогда зачем использовать ЛОВ?
Совершенно верно. В таблице, по которой строится отчет, более миллиона записей. Понятно, что колличество выводимых строк должно усекаться.
Если искать по значениям в столбце, то это
а) может быть долго
б) установлено ограничение на кол-во выводимых в отчет строк. Если не вешать на столбец отчета лов, то , судя по дебаг-логам, в условие запроса дописывается
Код: sql
1.
where rownum <= to_number(:APXWS_MAX_ROW_CNT)


, а это значит, что я скорее всего не увижу всех значений


авторСразу бросается в глаза кривой ЛОВ, зачем выводить на экран и возвращать одно и тоже?
Буду признателен , если подскажете , как сделать его правильно.
...
Рейтинг: 0 / 0
22.09.2015, 15:05
    #39058436
blkangel
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Медленно работает LOV в IR , возвращяющий большой объем данных
Arrisio,
Может стоит сделать деструктив, и вынести фильтр по сотрудникам как отдельный элемент.
Я еще больше склоняюсь к тому, что все таки IR не подходит под большие объемы.


Кстати по поводу индексов, Я тут разбирался и индекс не работает если ты ищешь по null, если только индекс не составной.
А при использовании составного индекса нужно в запросе соблюдать порядок. (тут я не профи, могу ошибаться)
Смотрите не cost запроса, а использование индексов, берет ли он их, или fullscan
...
Рейтинг: 0 / 0
22.09.2015, 15:45
    #39058529
Gustly
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Медленно работает LOV в IR , возвращяющий большой объем данных
Обычные b-tree индексы нуллы не содержат. Одно из решений - использовать функциональный индекс по nvl(column) .
...
Рейтинг: 0 / 0
22.09.2015, 17:20
    #39058654
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Медленно работает LOV в IR , возвращяющий большой объем данных
ArrisioМожет быть вы знаете варианты, как заставить LOV выводить список сотрудников за приемлемое время (не более нескольких секунд)? Или чтоб он начинал искать после пары введенных букв?


я не понял, как и где он у тебя исп-тся. дай скрин.
...
Рейтинг: 0 / 0
22.09.2015, 19:11
    #39058785
Arrisio
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Медленно работает LOV в IR , возвращяющий большой объем данных
blkangel,

Благодарю за советы
С производительностью самих sql-запросов сложностей нет. FULL_NAME is not null - это даже излишнее, безумянных людей ведь нет )
Кроме того, быстро работает отовсюду (при запросах из локально запущенного Toad, при перекачке данных с помощью Pentaho)

авторМожет стоит сделать деструктив, и вынести фильтр по сотрудникам как отдельный элемент.
Возможно, к этому и придет. Просто тормоза из-за объема данных проявляются и в др. местах (напр. выгрузка в xls используя плагин Interactive Report to MSExcel ). Надеялся, что есть возможность поправить все разом
...
Рейтинг: 0 / 0
22.09.2015, 19:18
    #39058792
Arrisio
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Медленно работает LOV в IR , возвращяющий большой объем данных
Petro123,
авторкак и где он у тебя исп-тся. дай скрин.
Сорри, не понял скрин чего надо сделать? "исп-тся" - имеется в виду испортился?
...
Рейтинг: 0 / 0
23.09.2015, 04:53
    #39058965
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Медленно работает LOV в IR , возвращяющий большой объем данных
Arrisio,
исп-тся = используется.
Скрин нужен ГУИ.
Может есть вариант другого интерфейса.
...
Рейтинг: 0 / 0
23.09.2015, 10:39
    #39059170
Курдль
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Медленно работает LOV в IR , возвращяющий большой объем данных
Arrisio, по законам юзабилити "миллионный отчет" не имеет смысла.
Глазами его не охватить, а данные для машинной обработки не называются отчетом.
Поэтому рекомендую вывести список сотрудников с важными агрегирующими значениями в одну таблицу, а подробности вызывать по клику на сотруднике или на ячейке агрегата.
...
Рейтинг: 0 / 0
23.09.2015, 13:28
    #39059404
Arrisio
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Медленно работает LOV в IR , возвращяющий большой объем данных
Курдль,

Благодарю за рекомндацию, но пытаюсь сделать немного другое.

Есть таблица с заявками (инциденты, Trouble tickets , обращения - кому как удобнее). Соотв. у заявок есть атрибуты "инициатор", "исполнитель" и.т.д.
Очень часто хотят делать выгрузки заявок, например, по исполнителю за год. Или по любому другому набору условий, возвращающим относительно небольшое кол-во записей. Т.е. пытаюсь сделать не систему отчетов расчетом KPI , агрегатов и проч. , а простой , но удобный для простого пользователя интерфейс для работы с сырыми данными.
...
Рейтинг: 0 / 0
23.09.2015, 13:54
    #39059437
Arrisio
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Медленно работает LOV в IR , возвращяющий большой объем данных
Petro123,
На столбце инициатор висит лов , выполняющий
Код: plsql
1.
2.
3.
4.
5.
6.
select FULL_NAME as display_value, FULL_NAME as return_value 
FROM s_people p
where exists 
    ( select 1 from hd_tasks t where t.customer_fio =p.full_name and t.customer_fio is not null)
and p.status='Active'
order by 1



Несмотря на то, что кост этого запроса на порядок больше, чем у приведенного в 1м сообщении, в гуи он работает быстрее за счет того, что возвращается 10к, а не 20к строк.
...
Рейтинг: 0 / 0
23.09.2015, 14:13
    #39059456
Курдль
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Медленно работает LOV в IR , возвращяющий большой объем данных
ArrisioКурдль,

...Т.е. пытаюсь сделать не систему отчетов расчетом KPI , агрегатов и проч. , а простой , но удобный для простого пользователя интерфейс для работы с сырыми данными.

Excel? :)

Не обязательно делать агрегаты, KPI и т.д.
Я имел в виду интерфейс "Drill Down".
Еще существуют визарды, помогающие пользователю ограничить выборку.


Слушай, я вот не верю, что кто-то мог спроектировать такую модель данных, где данные о сотрудниках содержатся только в миллионной таблице с инцидентам. А как же 3-НФ? :)
Мы множество постов обсуждаем подход к выборке данных, а на модель никто даже не удосужился взглянуть.
...
Рейтинг: 0 / 0
23.09.2015, 17:02
    #39059646
Arrisio
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Медленно работает LOV в IR , возвращяющий большой объем данных
Курдль,

авторExcel? :)
Кстати , иногда просят выгрузить табличку с сотней тысяч строк, а юзеры уже сами играют :(. От этого и хочу уйти

авторгде данные о сотрудниках содержатся только в миллионной таблице с инцидентам.
Смотри , в приведенном примере есть 2 таблицы HD_Tasks (заявки, млн строк), S_People (сотрудники 20к строк)
Создаю IR который делает выборку из HD_Tasks
Создаю LOV который смотрит на S_People и прикрепляю его к колонкам IR , в которых фигурируют сотрудники. Проблема в том, что сотрудников заведено много и штатный LOV достаточно медленно работает с их списком

авторМы множество постов обсуждаем подход к выборке данных, а на модель никто даже не удосужился взглянуть.
Я недавно на форуме. Не подскажешь, как найти обсуждение?
...
Рейтинг: 0 / 0
23.09.2015, 19:48
    #39059831
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Медленно работает LOV в IR , возвращяющий большой объем данных
ArrisioСоздаю LOV который смотрит на S_People и прикрепляю его к колонкам IR , в которых фигурируют сотрудники. Проблема в том, что сотрудников заведено много и штатный LOV достаточно медленно работает с их списком
если без LOV а сразу JOIN?
...
Рейтинг: 0 / 0
24.09.2015, 11:59
    #39060171
Arrisio
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Медленно работает LOV в IR , возвращяющий большой объем данных
Petro123,
Petro123если без LOV а сразу JOIN?
Оставить тип колонки "plain text" , а тип фильтрации "Use Define List of velues ..." и вставить туда запрос из LOV ?
Попробовал -так же медленно...
...
Рейтинг: 0 / 0
24.09.2015, 18:22
    #39060627
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Медленно работает LOV в IR , возвращяющий большой объем данных
Arrisio,
Ты о чём? Я о том чтобы фио расшифровывалось в основном запросе IR. Вообще без LOV.
Будет точно быстро.
...
Рейтинг: 0 / 0
25.09.2015, 09:16
    #39060871
blkangel
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Медленно работает LOV в IR , возвращяющий большой объем данных
Petro123Arrisio,
Ты о чём? Я о том чтобы фио расшифровывалось в основном запросе IR. Вообще без LOV.
Будет точно быстро.

Ты не внимательно читал, он же нам объяснил, в случае ограничение строк при фильтрации выдаст не всех сотрудников, именно поэтому он использует лов
...
Рейтинг: 0 / 0
25.09.2015, 09:30
    #39060889
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Медленно работает LOV в IR , возвращяющий большой объем данных
blkangelPetro123Arrisio,
Ты о чём? Я о том чтобы фио расшифровывалось в основном запросе IR. Вообще без LOV.
Будет точно быстро.

Ты не внимательно читал, он же нам объяснил, в случае ограничение строк при фильтрации выдаст не всех сотрудников, именно поэтому он использует лов
я это и не понял.
Т.е. нажал на фильтр и там нужны ВСЕ в СУБД?
ЗАЧЕМ?
...
Рейтинг: 0 / 0
25.09.2015, 09:33
    #39060893
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Медленно работает LOV в IR , возвращяющий большой объем данных
IMHO идиотское желание.
Я знаю, что у меня фильтр в 4-ке показывает только текущие с учётом пагинации (разбивки на страницы).
Но никогда в голову не приходило хотеть увидеть все из БД.
Либо я что-то не понял).
...
Рейтинг: 0 / 0
25.09.2015, 12:21
    #39061146
Arrisio
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Медленно работает LOV в IR , возвращяющий большой объем данных
Petro123,

Похоже, мы не понимаем друг дружку ((
Petro123Но никогда в голову не приходило хотеть увидеть все из БД.

Допустим, надо увидеть заявки определенного человека. Из-за ограничения кол-ва строк (вывожу 1k из 1млн) ни одна из его заявок не попала в текущее отображение отчета. Это значит , если не вешать LOV и для фильтрации использовать текущие значения (Filter type = Default based on column type), то я никогда не увижу ФИО этого сотрудника в списке выбора для фильтрации.
Выход , как его вижу - отображать весь список сотрудников

смог ли я прояснить ситуацию?
...
Рейтинг: 0 / 0
25.09.2015, 12:48
    #39061187
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Медленно работает LOV в IR , возвращяющий большой объем данных
Arrisio,
сложно понять, когда у тебя вверху скрин Инциденты, а ты хочешь заявки человека.
Заявка это Инцидент?

ВИ (варианты использования) №1: "заявки Иванова"
=====================
- модель один ко многому.
- вверху комбобокс ФИО, внизу список заявок?
?
...
Рейтинг: 0 / 0
25.09.2015, 12:51
    #39061193
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Медленно работает LOV в IR , возвращяющий большой объем данных
ArrisioИз-за ограничения кол-ва строк (вывожу 1k из 1млн)
Пока я не понял БЛ \ прецендент \ ВИ\ постановку задачи, мне трудно понять откуда ограничение на 1k записей.
...
Рейтинг: 0 / 0
25.09.2015, 13:32
    #39061239
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Медленно работает LOV в IR , возвращяющий большой объем данных
Arrisio,
я понял))) LOL
- ты вывалил всю БД в отчет с именем "вся БД".
А нужно сделать отчёт "Заявки &FIRST_NAME." (Заявки Иванова) или как я описал выше "Заявки по пользователям" с группировкой и полем поиска сверху.
...
Рейтинг: 0 / 0
25.09.2015, 13:33
    #39061242
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Медленно работает LOV в IR , возвращяющий большой объем данных
Petro123"Заявки по пользователям" с группировкой
у тебя на скрине последняя кнопка синяя справа. Потом сохранить отчёт как основной.
...
Рейтинг: 0 / 0
Форумы / Oracle APEX [игнор отключен] [закрыт для гостей] / Медленно работает LOV в IR , возвращяющий большой объем данных / 25 сообщений из 27, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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