AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 06.06.2009, 13:53   #1  
Varmen is offline
Varmen
Участник
 
190 / 13 (1) ++
Регистрация: 02.10.2007
сортировка по индексу group by
господа,я правильно понял?

при группировке запрос не может более быть отсортирован по индексу главной таблицы.

Так же весь запрос не может быть отсортирован по полю подчиненной таблицы.

иными словами в
SELECT SUM(qty) FROM WMSOrderTrans USING INDEX RouteIdx GROUP BY WMSOrderTrans.itemId ASC WHERE ((routeId = N'095000935')) AND ((fullPallet = 0)) JOIN * FROM InventDim GROUP BY InventDim.wMSLocationId ASC WHERE WMSOrderTrans.inventDimId = InventDim.inventDimId

результат не отсортировать по RouteIdx .
и результат тоже не отсортировать по InventDim.wMSLocationId.


И обойти это можно только создав view ?
__________________
The Variable men power.

Последний раз редактировалось Varmen; 06.06.2009 в 13:57.
Старый 06.06.2009, 13:57   #2  
AndyD is offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2,560 / 2479 (88) +++++++++
Регистрация: 20.08.2005
Сортировка идет по группируемым полям.
__________________
Axapta v.3.0 sp5 kr2
Старый 06.06.2009, 13:59   #3  
AndyD is offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2,560 / 2479 (88) +++++++++
Регистрация: 20.08.2005
В вашем случае будет сортировка
WMSOrderTrans.itemId ASC, InventDim.wMSLocationId ASC
__________________
Axapta v.3.0 sp5 kr2
Старый 06.06.2009, 14:06   #4  
Varmen is offline
Varmen
Участник
 
190 / 13 (1) ++
Регистрация: 02.10.2007
а с индексом как, он игнорируется?
в книжке написано, использование полей вместо индекса "подтормаживает" отчет.
Т.е тут цели можно достичь, можно только добавив все поля состоящие в индексе искуственно в group by в нужной последовательности- -> тобишь "торможением" отчета?
__________________
The Variable men power.

Последний раз редактировалось Varmen; 06.06.2009 в 14:17.
Старый 06.06.2009, 14:39   #5  
Wamr is offline
Wamr
----------------
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
 
1,737 / 858 (32) +++++++
Регистрация: 15.01.2002
Адрес: Москва
Записей в блоге: 7
"все смешалось в доме Облонских"
индекс используется не для сортировки данных, а для быстрой выборки из БД. Сначала SQL-сервер на основе вашего запроса будет строить план и выбирать оптимальное использование индексов, если у вас индекс указан явно, то сервер просто его и использует, а дальше уже начнется фильтрация, объединение и сортировка.
У вас не может быть сортировки по RouteID, так как он 1 единственный (в WHERE указан).
А чтобы сделать сортировку по WMSLocationId первой, то в запросе надо первым поставить InventDim, а уж потом WMSOrderTrans
Старый 06.06.2009, 14:59   #6  
Varmen is offline
Varmen
Участник
 
190 / 13 (1) ++
Регистрация: 02.10.2007
книга говорит иначе.
Миниатюры
Нажмите на изображение для увеличения
Название: index.jpeg
Просмотров: 422
Размер:	33.2 Кб
ID:	4776  
__________________
The Variable men power.
Старый 06.06.2009, 15:09   #7  
Wamr is offline
Wamr
----------------
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
 
1,737 / 858 (32) +++++++
Регистрация: 15.01.2002
Адрес: Москва
Записей в блоге: 7
Руководство разработчика:

Цитата:
Using Index and Order By in select statements

If data ordering is important, use ORDER BY in your SELECT statements. If you can predict that the database will not be capable of deciding which index it should choose, use the INDEX keyword to give the database a hint of which index to choose. Combine this with an ORDER BY expression to get MorphX to select records in a specific order.

Using the INDEX keyword but without ORDER BY the selected records are sorted according to the definition of the INDEX. If an index has been deactivated (Enabled=No), the SELECT statement is still valid. However, the database cannot use the hint (as the index does not exist), and has to choose some other index.

In general, use indexes to optimize selection of records. As a well-defined side effect, data are sorted according to the index definition. Use the REVERSE keyword if you want the sorted output in reverse order.
Старый 06.06.2009, 15:25   #8  
AndyD is offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2,560 / 2479 (88) +++++++++
Регистрация: 20.08.2005
INDEX просто вставляет в ORDER BY поля, входящие в него.
Какие индексы при этом будут использоваться - это уже на усмотрение сервера

По-моему, в книге путается INDEX c INDEX HINT
__________________
Axapta v.3.0 sp5 kr2
Старый 06.06.2009, 17:07   #9  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
А какая версия системы?
И что за книжка?
Старый 07.06.2009, 12:35   #10  
Varmen is offline
Varmen
Участник
 
190 / 13 (1) ++
Регистрация: 02.10.2007
если про мой отрывок, то это та книга, которую Вы переводили. стр 63. Стеена Андреасена "Морфих ИТ"
Ниже, идет абзац про индекс хинт, это о чем говорит Warm.
__________________
The Variable men power.
Старый 07.06.2009, 14:26   #11  
ZVV is offline
ZVV
MCITP
MCP
Oracle
MCBMSS
 
1,006 / 246 (11) ++++++
Регистрация: 13.02.2004
Адрес: Минск
->
Цитата:
Сообщение от Varmen Посмотреть сообщение
книга говорит иначе.
Книга не иначе говорит, а "по-другому"
Хинт INDEX говорит о том, что нужно отсортировать результат в порядке полей данного индекса. Какой приэтом будет план запроса и будет ли в запросе по факту использоваться данный индекс - вообще вещь ортогональная: Аксапта просто добавит "ордер бай поля_индекса".

Но если говорить об исходном вопросе, то если у Вас есть Group by, то Аксапта сама подставит в запрос и эквивалентный Order by по тем же полям. Т.е. добиться запроса с группировкой по одним полям, а сортировкой по другим не получается, насколько я знаю, без дополнительных телодвижений... Для чего это так было сделано - сложно сказать. Вероятно, чтобы обеспечить сортировку именно в порядке группировки. Потому что, в большинстве случаев именно так и нужно по логике, а с другой стороны СУБД (Оракл, по крайней мере) твёрдой гарантии, что результат группировки будет отсортирован в порядке этой группировки не даёт...
__________________
Zhirenkov Vitaly
Старый 07.06.2009, 16:19   #12  
gl00mie is offline
gl00mie
Участник
MCBMSS
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,684 / 5798 (201) ++++++++++
Регистрация: 28.11.2005
Адрес: Москва
Записей в блоге: 3
Цитата:
Сообщение от ZVV Посмотреть сообщение
Т.е. добиться запроса с группировкой по одним полям, а сортировкой по другим не получается, насколько я знаю, без дополнительных телодвижений...
Например, без перехода на DAX2009, где в QueryBuildDataSource, наконец, появилась возможность штатно группировать под одному списку полей, а сортировать по другому (см. addGroupByField() и addOrderByField()); то же относится там к объектам Query в AOT'е.
За это сообщение автора поблагодарили: alex55 (1).
Старый 08.06.2009, 06:13   #13  
SRF is offline
SRF
Участник
MCBMSS
Axapta Retail User
 
375 / 562 (19) +++++++
Регистрация: 08.08.2007
Записей в блоге: 1
Цитата:
Сообщение от Varmen Посмотреть сообщение
И обойти это можно только создав view ?
Цитата:
Сообщение от gl00mie Посмотреть сообщение
Например, без перехода на DAX2009, ... появилась возможность штатно группировать под одному списку полей, а сортировать по другому ... то же относится там к объектам Query в AOT'е.
Но, именно насчет view будьте осторожны в DAX2009, не так давно, была тема - Групировка и сортировка в AX5 ?.
Теги
index, order by

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Dianne Siebold: Yahoo Group for Dynamics AX Blog bot DAX Blogs 0 16.10.2007 08:23
Dynamics AX: Dynamics AX New Zealand Users Group Blog bot DAX Blogs 0 28.10.2006 16:40
сортировка kitty DAX: Программирование 1 20.07.2006 20:40
group , но не by slava DAX: Программирование 9 21.05.2003 19:05

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 20:30.