есть необходимость сделать выборку по одному индексу, а потом по желанию пользователя делать сортировки, но для этого надо задействовать другие индексы. Возможно ли это? если нет, посоветуйте как это обойти. примерный код привожу ниже
from
ListGood
where
(( byPodr == ListGood.CPodr and //здесь должна быть сортировка Listgood05
ListGood.cMC == KatMC.nRec and
ListGood.cOtpEd == KatOtpEd.nRec and
KatMC.cED == KatEd.nRec and
KatMC.cGroupMC == GroupMC.nRec and
byPodr == KatPodr.Nrec
))
order byArticul ListGood.Articul //здесь должна быть сортировка Listgood02
order byNameMC ListGood.NameGoods //здесь должна быть сортировка Listgood02
order byBarCode ListGood.BarCode //здесь должна быть сортировка Listgood04
еслиявно не указывать Listgood05 система индекса не находит и выгрузка происходит очень долго. если явно указать, то не работают сортировки, а задать индексы (другие) на сортировку я не могу.
Спасибо всем кто откликнется.
Несколько индексов в выборке
Модераторы: m0p3e, edward_K, Модераторы
-
- Местный житель
- Сообщения: 474
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: Сибирь-матушка
- Контактная информация:
Re: Несколько индексов в выборке
проблема сто раз обсосана в Vip&ARD ...
нет индекса подходящего по сегментам для требуемой сортировки с учетом ограничений в where - не будет сортировки ...либо будет но во внешней выгрузке, что есть не фонтан быстродействия ... если опыт и квалификация позволяет(если понимаешь что от этого может быть и как от этого избавиться в случае чего без ущерба БД ) - можешь докомпилить словарь нужными индексами.
нет индекса подходящего по сегментам для требуемой сортировки с учетом ограничений в where - не будет сортировки ...либо будет но во внешней выгрузке, что есть не фонтан быстродействия ... если опыт и квалификация позволяет(если понимаешь что от этого может быть и как от этого избавиться в случае чего без ущерба БД ) - можешь докомпилить словарь нужными индексами.
Питаю патологические отвращение и ненависть в особо тяжелой и крайне запущенной формах к семейству программ Microsoft Business Solution !
Восславим господа Кришну за то, что у нас есть ГАЛАКТИКА !
Восславим господа Кришну за то, что у нас есть ГАЛАКТИКА !
Re: Несколько индексов в выборке
в том-то и дело что индексы все еть, но если явно не указываю, то происходит внешняя выгрузка. если я явно указываю индекс, то все хорошо кроме того, что сортировки не работают. если первоначальный вариант
from
ListGood
where
(( byPodr == ListGood.CPodr and
ListGood.cMC == KatMC.nRec and
ListGood.cOtpEd == KatOtpEd.nRec and
KatMC.cED == KatEd.nRec and
KatMC.cGroupMC == GroupMC.nRec and
byPodr == KatPodr.Nrec
))
order byArticul ListGood.Articul
order byNameMC ListGood.NameGoods
order byBarCode ListGood.BarCode
переписать следующим образом
from
ListGood(Listgood05)
where
(( byPodr == ListGood.CPodr and
ListGood.cMC == KatMC.nRec and
ListGood.cOtpEd == KatOtpEd.nRec and
KatMC.cED == KatEd.nRec and
KatMC.cGroupMC == GroupMC.nRec and
byPodr == KatPodr.Nrec
))
order byArticul ListGood.Articul
order byNameMC ListGood.NameGoods
order byBarCode ListGood.BarCode
то все быстро работает,НО индекс Listgood05 идет по полю CPodr. т.е. не работают orderы
from
ListGood
where
(( byPodr == ListGood.CPodr and
ListGood.cMC == KatMC.nRec and
ListGood.cOtpEd == KatOtpEd.nRec and
KatMC.cED == KatEd.nRec and
KatMC.cGroupMC == GroupMC.nRec and
byPodr == KatPodr.Nrec
))
order byArticul ListGood.Articul
order byNameMC ListGood.NameGoods
order byBarCode ListGood.BarCode
переписать следующим образом
from
ListGood(Listgood05)
where
(( byPodr == ListGood.CPodr and
ListGood.cMC == KatMC.nRec and
ListGood.cOtpEd == KatOtpEd.nRec and
KatMC.cED == KatEd.nRec and
KatMC.cGroupMC == GroupMC.nRec and
byPodr == KatPodr.Nrec
))
order byArticul ListGood.Articul
order byNameMC ListGood.NameGoods
order byBarCode ListGood.BarCode
то все быстро работает,НО индекс Listgood05 идет по полю CPodr. т.е. не работают orderы
-
- Местный житель
- Сообщения: 645
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: г.Королев МО ООО "Эффективная Комплексная Автоматизация- СОФТ"
Re: Несколько индексов в выборке
Как это у вас есть индексы...нет их у Вас..в этом и дело.
Совтавной индекс нужен такой, к примеру, для сортировки по имени и выбрке по подразделению:
NameGoods + cPodr в таблице ListGood..там такого нет.
Значит придется делать так только:
root == ListGood.Namegoods and
( byPodr = ListGood.cPodr) and
......
но работать будет медленно
Совтавной индекс нужен такой, к примеру, для сортировки по имени и выбрке по подразделению:
NameGoods + cPodr в таблице ListGood..там такого нет.
Значит придется делать так только:
root == ListGood.Namegoods and
( byPodr = ListGood.cPodr) and
......
но работать будет медленно
Некоммерческое общение в форуме
-
- Абориген
- Сообщения: 943
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: External Developer
- Контактная информация:
Re: Несколько индексов в выборке
А можно сделать и покрасивее и элегантнее )))
byList == ListGood.Namegoods (noindex) and
byPodr == ListGood.cPodr and
...
А вообще - АДМИН !! ПЕРЕНИЕСИ ЭТУ ВЕТКУ В ВИП ИЛИ УДАЛИ ЕЕ!!!
ХАРОШ ОФФТОПИТЬ !!!
byList == ListGood.Namegoods (noindex) and
byPodr == ListGood.cPodr and
...
А вообще - АДМИН !! ПЕРЕНИЕСИ ЭТУ ВЕТКУ В ВИП ИЛИ УДАЛИ ЕЕ!!!
ХАРОШ ОФФТОПИТЬ !!!