powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle APEX [игнор отключен] [закрыт для гостей] / Медленно работает LOV в IR , возвращяющий большой объем данных
27 сообщений из 27, показаны все 2 страниц
Медленно работает LOV в IR , возвращяющий большой объем данных
    #39058203
Arrisio
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день, Коллеги

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

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


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


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


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


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

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

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

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

Есть таблица с заявками (инциденты, Trouble tickets , обращения - кому как удобнее). Соотв. у заявок есть атрибуты "инициатор", "исполнитель" и.т.д.
Очень часто хотят делать выгрузки заявок, например, по исполнителю за год. Или по любому другому набору условий, возвращающим относительно небольшое кол-во записей. Т.е. пытаюсь сделать не систему отчетов расчетом KPI , агрегатов и проч. , а простой , но удобный для простого пользователя интерфейс для работы с сырыми данными.
...
Рейтинг: 0 / 0
Медленно работает LOV в IR , возвращяющий большой объем данных
    #39059437
Arrisio
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
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
Медленно работает LOV в IR , возвращяющий большой объем данных
    #39059456
Курдль
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ArrisioКурдль,

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

Excel? :)

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


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

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

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

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

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

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

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

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

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

ВИ (варианты использования) №1: "заявки Иванова"
=====================
- модель один ко многому.
- вверху комбобокс ФИО, внизу список заявок?
?
...
Рейтинг: 0 / 0
Медленно работает LOV в IR , возвращяющий большой объем данных
    #39061193
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ArrisioИз-за ограничения кол-ва строк (вывожу 1k из 1млн)
Пока я не понял БЛ \ прецендент \ ВИ\ постановку задачи, мне трудно понять откуда ограничение на 1k записей.
...
Рейтинг: 0 / 0
Медленно работает LOV в IR , возвращяющий большой объем данных
    #39061239
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Arrisio,
я понял))) LOL
- ты вывалил всю БД в отчет с именем "вся БД".
А нужно сделать отчёт "Заявки &FIRST_NAME." (Заявки Иванова) или как я описал выше "Заявки по пользователям" с группировкой и полем поиска сверху.
...
Рейтинг: 0 / 0
Медленно работает LOV в IR , возвращяющий большой объем данных
    #39061242
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123"Заявки по пользователям" с группировкой
у тебя на скрине последняя кнопка синяя справа. Потом сохранить отчёт как основной.
...
Рейтинг: 0 / 0
Медленно работает LOV в IR , возвращяющий большой объем данных
    #39061250
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
совет ещё вверху полем поиска сделать плагин select2. Там много фишек для работы с большими списками.
...
Рейтинг: 0 / 0
Медленно работает LOV в IR , возвращяющий большой объем данных
    #39063172
Arrisio
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123,
Petro123select2
Видел этот плагин - выглядит симпатично. Возможно на него придется переделать фильтрацию. Но, как сказал blkangel , выносить фильтр по каждому атрибуту в отдельный элемент интерфейса - это диструктив.

Кстати, не подскажете , чем отличаются атрибуты столбцов
Код: plaintext
1.
type = "Plain Text (based on List of values)"  
Column Filter Type = "Use Named List of Values Exact Match" (см. скрин)
Вроде делают одно и то же, но запросы к базе , на основании которых строятся IR, получаются принципиально разные
...
Рейтинг: 0 / 0
27 сообщений из 27, показаны все 2 страниц
Форумы / Oracle APEX [игнор отключен] [закрыт для гостей] / Медленно работает LOV в IR , возвращяющий большой объем данных
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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