Несколько индексов в выборке

Высказывание своих предложений, соображений, поздравлений и т.д.

Модераторы: m0p3e, edward_K, Модераторы

Ответить
AlexY
Сообщения: 15
Зарегистрирован: 29 мар 2005, 17:49
Контактная информация:

Несколько индексов в выборке

Сообщение AlexY »

есть необходимость сделать выборку по одному индексу, а потом по желанию пользователя делать сортировки, но для этого надо задействовать другие индексы. Возможно ли это? если нет, посоветуйте как это обойти. примерный код привожу ниже

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 система индекса не находит и выгрузка происходит очень долго. если явно указать, то не работают сортировки, а задать индексы (другие) на сортировку я не могу.

Спасибо всем кто откликнется.
Goblin
Местный житель
Сообщения: 474
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Сибирь-матушка
Контактная информация:

Re: Несколько индексов в выборке

Сообщение Goblin »

проблема сто раз обсосана в Vip&ARD ...
нет индекса подходящего по сегментам для требуемой сортировки с учетом ограничений в where - не будет сортировки ...либо будет но во внешней выгрузке, что есть не фонтан быстродействия ... если опыт и квалификация позволяет(если понимаешь что от этого может быть и как от этого избавиться в случае чего без ущерба БД ) - можешь докомпилить словарь нужными индексами.
Питаю патологические отвращение и ненависть в особо тяжелой и крайне запущенной формах к семейству программ Microsoft Business Solution !
Восславим господа Кришну за то, что у нас есть ГАЛАКТИКА !
AlexY
Сообщения: 15
Зарегистрирован: 29 мар 2005, 17:49
Контактная информация:

Re: Несколько индексов в выборке

Сообщение AlexY »

в том-то и дело что индексы все еть, но если явно не указываю, то происходит внешняя выгрузка. если я явно указываю индекс, то все хорошо кроме того, что сортировки не работают. если первоначальный вариант

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ы
ecasoft
Местный житель
Сообщения: 645
Зарегистрирован: 29 мар 2005, 17:49
Откуда: г.Королев МО ООО "Эффективная Комплексная Автоматизация- СОФТ"

Re: Несколько индексов в выборке

Сообщение ecasoft »

Как это у вас есть индексы...нет их у Вас..в этом и дело.

Совтавной индекс нужен такой, к примеру, для сортировки по имени и выбрке по подразделению:

NameGoods + cPodr в таблице ListGood..там такого нет.

Значит придется делать так только:

root == ListGood.Namegoods and
( byPodr = ListGood.cPodr) and
......

но работать будет медленно
Некоммерческое общение в форуме
Maverick
Абориген
Сообщения: 943
Зарегистрирован: 29 мар 2005, 17:49
Откуда: External Developer
Контактная информация:

Re: Несколько индексов в выборке

Сообщение Maverick »

А можно сделать и покрасивее и элегантнее )))

byList == ListGood.Namegoods (noindex) and
byPodr == ListGood.cPodr and
...


А вообще - АДМИН !! ПЕРЕНИЕСИ ЭТУ ВЕТКУ В ВИП ИЛИ УДАЛИ ЕЕ!!!
ХАРОШ ОФФТОПИТЬ !!!
Изображение
Знающий людей разумен.
Знающий себя просветлён.
Побеждающий людей силен.
Побеждающий самого себя могущественнен
Ответить