AXForum  
Go Back   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Forgotten Your Password?
Register Forum Rules FAQ Members List Today's Posts Search

 
 
Thread Tools Search this Thread Display Modes
Old 06.06.2009, 13:53   #1  
Varmen is offline
Varmen
Участник
 
190 / 13 (1) ++
Join Date: 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.

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

Last edited by Varmen; 06.06.2009 at 14:17.
Old 06.06.2009, 14:39   #5  
Wamr is offline
Wamr
----------------
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
 
1,737 / 868 (32) +++++++
Join Date: 15.01.2002
Location: Москва
Blog Entries: 7
"все смешалось в доме Облонских"
индекс используется не для сортировки данных, а для быстрой выборки из БД. Сначала SQL-сервер на основе вашего запроса будет строить план и выбирать оптимальное использование индексов, если у вас индекс указан явно, то сервер просто его и использует, а дальше уже начнется фильтрация, объединение и сортировка.
У вас не может быть сортировки по RouteID, так как он 1 единственный (в WHERE указан).
А чтобы сделать сортировку по WMSLocationId первой, то в запросе надо первым поставить InventDim, а уж потом WMSOrderTrans
Old 06.06.2009, 14:59   #6  
Varmen is offline
Varmen
Участник
 
190 / 13 (1) ++
Join Date: 02.10.2007
книга говорит иначе.
Attached Thumbnails
Click image for larger version

Name:	index.jpeg
Views:	435
Size:	33.2 KB
ID:	4776  
__________________
The Variable men power.
Old 06.06.2009, 15:09   #7  
Wamr is offline
Wamr
----------------
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
 
1,737 / 868 (32) +++++++
Join Date: 15.01.2002
Location: Москва
Blog Entries: 7
Руководство разработчика:

Quote:
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.
Old 06.06.2009, 15:25   #8  
AndyD is offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2,560 / 2494 (89) +++++++++
Join Date: 20.08.2005
INDEX просто вставляет в ORDER BY поля, входящие в него.
Какие индексы при этом будут использоваться - это уже на усмотрение сервера

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

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

 

Similar Threads
Thread Thread Starter Forum Replies Last Post
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

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Forum Jump

Рейтинг@Mail.ru
All times are GMT +3. The time now is 02:53.
Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Contacts E-mail, Advertising.