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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 17.08.2011, 11:57   #1  
Maximin is offline
Maximin
NavAx
NavAx Club
 
415 / 361 (13) ++++++
Регистрация: 09.10.2002
Адрес: Москва
Цитата:
Сообщение от trud Посмотреть сообщение
т.е. вы делаете что то подобное
select sum(AmountMST) group by AmountMST
и удивляетесь, что получается фигня?
Думаю при таком запросе так и должно быть
Это не я делаю. Я делаю select sum(AmountMST) index <содержащий AmountMST> а в результате на SQL уходит то, что вы сказали. В любом случае, даже на запрос в таком виде я имею право рассчитывать получить корректный результат.

2 Kuskov Я не путаю index и index hint. В моем запросе был явно указан индекс, т.е. НЕ index hint (впрочем, надо будет попробовать указать index hint и полюбопытствовать). Я знаю о параметрах автоматического добавления GROUP BY и ORDER BY, и веду разговор о том, что при их работе появляется вот такой побочный эффект.
__________________
Жизнь прекрасна! Если, конечно, правильно подобрать антидепрессанты...
Старый 17.08.2011, 12:53   #2  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,452 / 1792 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
Цитата:
Сообщение от Maximin Посмотреть сообщение
Я знаю о параметрах автоматического добавления GROUP BY и ORDER BY, и веду разговор о том, что при их работе появляется вот такой побочный эффект.
Ну не знаю на сколько можно считать такой эфект побочным. Если составляя запрос программист осмысленно добавляет в него групировку по всем полям индекса (а именно это и происходит при использовании директивы index одновременно c group by), то вся ответственность за это лежит на программисте.

Для чего вообще может понадобиться использовать директиву index совместно с group by?
На самом деле в случае когда последовательность полей в сортировке критична для алгоритма, даже в случае с order by лучше напрямую перечислить нужные поля, пусть даже они и совпадают с текущим состоянием индекса, чем косвенно ссылаться на те же поля через индекс и в будущем огрести кучу проблем.
Старый 17.08.2011, 13:20   #3  
Maximin is offline
Maximin
NavAx
NavAx Club
 
415 / 361 (13) ++++++
Регистрация: 09.10.2002
Адрес: Москва
Элементарно, Ватсон!

Приведу пару случаев. Первый паттерн использования (где поймал) я уже приводил в первом сообщении, добавлю к нему еще один.
1. Запрос внутри генератора РФО, при расчете суммы проводок использует как раз запрос с суммой по числовому полю. Попытка "подсказать" частенько выбирающему не тот индекс планировщику запросов как раз и привела к подобному финалу.
2. Да, собственно, почти любая фин. отчетность с попыткой оптимизации. Например, есть у нас "свой" генератор фин.отчетов, там запрос хранится в AOT с уже указанным индексом внутри - опять же, для скорости.

Что касается полезности индекса по числовому полю, заранее скажу - во всякого рода отчетности часто используют конструкции типа AmountMST > 0, AmountMST < 0. Более того, такой индекс как раз и был создан по рекомендациям SQL Profiler'а.
__________________
Жизнь прекрасна! Если, конечно, правильно подобрать антидепрессанты...
Старый 17.08.2011, 13:32   #4  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,452 / 1792 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
Цитата:
Сообщение от Maximin Посмотреть сообщение
Попытка "подсказать" частенько выбирающему не тот индекс планировщику запросов как раз и привела к подобному финалу.
2. Да, собственно, почти любая фин. отчетность с попыткой оптимизации.
Цитата:
Сообщение от Maximin Посмотреть сообщение
Я не путаю index и index hint. В моем запросе был явно указан индекс, т.е. НЕ index hint
Мы точно говорим про одно и тоже? Ещё раз.
Подсказка планировщику осущесвтляется при помощи "index hint". В этом случае сам запрос не модифицируется, хинт влияет только на выбор плана исполнения запроса.
"Index" - это принудителная сортировка/групировка по списку полей из индекса , т.е. изменение самого тела запроса.
Теги
ax2009, bug, sql, группировка, запрос (query), ошибка, ax4.0

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
axinthefield: Optimizing AX Batch Performance - Batch Group Configuration Blog bot DAX Blogs 0 01.04.2011 13:11
dynamicsaxtraining: Item setup: Inventory dimension group Blog bot DAX Blogs 1 05.10.2010 15:35
Shekhar: Dynamics AX : ‘Group total’ account length and account type in GL Blog bot DAX Blogs 0 31.05.2010 22:05
dynamicsaxtraining: Item setup: Item group Blog bot DAX Blogs 0 12.11.2009 17:05
emeadaxsupport: Group policy setting "System Objects: Default owner for objects created by members of the administrators group" is missing on Windows Server 2008 Blog bot DAX Blogs 2 28.08.2009 02:14
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра
Комбинированный вид Комбинированный вид

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

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

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