|
![]() |
#1 |
Участник
|
Так аналитика изначально была в строках(а форма заказов отображает шапки). Т.е. заказ показывается пользователю если есть хотя бы одна строка из того чем его подразделение торгует. Я не смог придумать как такое решить индексами и как вообще технически сделать подобную задачу. т.е. на каких-то объемах это просто начало тормозить. можно наверное как-то поиграться с материлизованными вью было
|
|
![]() |
#2 |
Moderator
|
Цитата:
Сообщение от trud
![]() Так аналитика изначально была в строках(а форма заказов отображает шапки). Т.е. заказ показывается пользователю если есть хотя бы одна строка из того чем его подразделение торгует. Я не смог придумать как такое решить индексами и как вообще технически сделать подобную задачу. т.е. на каких-то объемах это просто начало тормозить. можно наверное как-то поиграться с материлизованными вью было
|
|
![]() |
#3 |
Участник
|
Так я о том и говорю, что exists join где условие накладывается на привязанную таблицу - это по сути полный скан таблицы заказов при открытии формы(т.е. ты находишь сначала по индексу записи в фильтрующей таблице, потом ищешь все заказы которые под это попадают(так так на формах обычно сортировка по коду заказа), сортируешь их, и выводишь первые 10. Это отлично работает на малых объемах, но начиная с сотни тысяч уже тормозит и никакими индексами это не победить
|
|
![]() |
#4 |
Moderator
|
Цитата:
Сообщение от trud
![]() Так я о том и говорю, что exists join где условие накладывается на привязанную таблицу - это по сути полный скан таблицы заказов при открытии формы(т.е. ты находишь сначала по индексу записи в фильтрующей таблице, потом ищешь все заказы которые под это попадают(так так на формах обычно сортировка по коду заказа), сортируешь их, и выводишь первые 10. Это отлично работает на малых объемах, но начиная с сотни тысяч уже тормозит и никакими индексами это не победить
![]() ![]() |
|
![]() |
#5 |
Участник
|
Цитата:
Сообщение от fed
![]() Сиквел может оказаться достаточно умным чтобы сначала отобрать записи в этой дополнительной таблице и потом уже результат заджойнить через nested look к таблице заказов. Более того - он может в этой дополнительнойтаблице отобрать первые 10 или 20 записей по нужному подразделению и потом их быстренько по кластерному ключу приджойнить nested loop к таблице заказов.
так а это как поможет, выбирать то надо по "или", у пользователя может быть несколько подразделенией и т.п. |
|
![]() |
#6 |
Moderator
|
Цитата:
Сообщение от trud
![]() Так он так и делает. т.е. у тебя миллион заказов и 3 подразделения. предположим у пользователя настоено 1. т.е. вначале отбирается 300тыс заказов в фильтрующей таблице, потом проверяет все эти 300к заказов(на форме же как правило указывается сортировка и отказывать от нее никто не хочет), из них выбираются 10.
так а это как поможет, выбирать то надо по "или", у пользователя может быть несколько подразделенией и т.п. ![]() |
|
![]() |
#7 |
Moderator
|
|
|
|
Опции темы | Поиск в этой теме |
Опции просмотра | |
|