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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 29.05.2009, 09:10   #1  
AndyD is offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2,560 / 2494 (89) +++++++++
Регистрация: 20.08.2005
С KR поведение ядра по добавлению хинтов отличается от "чистой" Axapat'ы (без KR)

Без KR добавление ORDER BY не имеет эффекта.

Наличие же INDEX ВСЕГДА отключает хинты ядра. Причем, даже если самого индекса и не существует в базе (отключен конф. ключ). И здесь так же есть различие в поведении с KR.
Без KR в order by запроса всегда добавляются поля из индекса (для неагрегированного запроса). C KR - только если индекс не отключен в конфигурации.

Так что, с KR можно создать для таблицы фейковый индекс и использовать его для критических запросов

А вообще, выбор того или иного индекса зависит от количества полей, входящих в предложение WHERE, а так же от того, сколько этих полей входит в различные индексы (естественно, если не указывать index hint).

Алгоритм, примерно, следующий:
  1. Выбирается список индексов, первое поле которых есть в предложении WHERE. Если такой индекс один, то подставляется он в INDEX HINT, если таких индексов несколько - переходим к пункту 2
  2. Для каждого следующего поля выбранных индексов проверяется, входит ли оно в WHERE. Этот пункт повторяется до тех пор, пока не останется один индекс или не закончится список полей в выбранных индексах. Если остался один индекс, то используется он, если несколько, то отправляется запрос без хинта (пусть сервер сам разбирается)
Для KR наличие order by влияет на хинты, но я не уловил закономерность.
Что заметил - соответствие полей в ORDER BY какому-либо индексу и наличие этих полей в предложении WHERE в некоторых случаях отключает хинты.

PS Я пишу KR, но проверял только на KR2 (dax 3.0 sp5 kr2). Предположение, что это правильно для всех KR - надо проверять
Без KR проверял на Axapta 3.0 sp3 cu1
__________________
Axapta v.3.0 sp5 kr2
За это сообщение автора поблагодарили: mazzy (2), dn (1), raz (13), ZVV (2), lev (1), SRF (1).
Старый 01.06.2009, 10:22   #2  
lev is offline
lev
Ищущий знания...
Аватар для lev
Oracle
MCBMSS
Axapta Retail User
 
1,723 / 491 (20) +++++++
Регистрация: 18.01.2005
Адрес: Москва
Цитата:
Сообщение от AndyD Посмотреть сообщение
...
Алгоритм, примерно, следующий:
  1. Выбирается список индексов, первое поле которых есть в предложении WHERE. Если такой индекс один, то подставляется он в INDEX HINT, если таких индексов несколько - переходим к пункту 2
  2. Для каждого следующего поля выбранных индексов проверяется, входит ли оно в WHERE. Этот пункт повторяется до тех пор, пока не останется один индекс или не закончится список полей в выбранных индексах. Если остался один индекс, то используется он, если несколько, то отправляется запрос без хинта (пусть сервер сам разбирается)
Для KR наличие order by влияет на хинты, но я не уловил закономерность.
Что заметил - соответствие полей в ORDER BY какому-либо индексу и наличие этих полей в предложении WHERE в некоторых случаях отключает хинты.

PS Я пишу KR, но проверял только на KR2 (dax 3.0 sp5 kr2). Предположение, что это правильно для всех KR - надо проверять
Без KR проверял на Axapta 3.0 sp3 cu1
Такой вопросик... А от БД не зависит поведение? Я имею ввиду на Оракле аха или на SQL.
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с)
С Уважением,
Елизаров Артем
Старый 02.06.2009, 10:42   #3  
ZVV is offline
ZVV
MCITP
MCP
Oracle
MCBMSS
 
1,006 / 246 (11) ++++++
Регистрация: 13.02.2004
Адрес: Минск
->
Цитата:
Сообщение от lev Посмотреть сообщение
Такой вопросик... А от БД не зависит поведение? Я имею ввиду на Оракле аха или на SQL.
По моим субъективным ощущениям - на Оракле примерно то же самое...
__________________
Zhirenkov Vitaly
Теги
hint, index, kernel rollup, полезное, ax3.0, kr (kernel rollup)

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Не работает трассировка SQL Corel DAX: Администрирование 2 20.05.2009 11:30
Не работает индекс в отчете dreamer DAX: Программирование 8 10.07.2008 16:00
aEremenko: Использование прямых запросов SQL Blog bot DAX Blogs 4 18.07.2007 10:09
JOIN программно на форме не работает rohlenko DAX: Программирование 2 31.03.2005 15:41
CRM ABC, SWOT анализ Как это работает и работает ли вообще. ShadowFromXZone DAX: Функционал 16 02.03.2004 18:09

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

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

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