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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 17.08.2007, 00:57   #6  
SHiSHok is offline
SHiSHok
Участник
Аватар для SHiSHok
Дети Юза
 
219 / 103 (4) +++++
Регистрация: 28.07.2005
Адрес: Донецк
Цитата:
Сообщение от mazzy Посмотреть сообщение
Во-первых, с чего вы взяли, что так будет всегда и у всех.
Во-вторых, явные хинты требуют постоянного административного внимания.
В-третьих, с какой стати у вас сиквел сам этого не понимает? Разберитесь именно с этим.
В-четвертых, где-то в блогах, по-моему, Еременко писал, что условия после всех join'ов в Аксапте работает медленнее, чем условия внутри.
1) думаю будет:
- запрос состоит из inner join-ов, т.о. отсутствие записи в любой таблице ведет к пустому запросу
- множество записей в markupTrans обозначено явно (TransTableId + TransRecId)
- каждая запись в множестве markupTrans ссылается на 1 (и более) записей в FACTURETRANS_RU - FACTURETRANS_RU.MARKUPREFRECID=MARKUPTRANS.RECID (есть индекс по этому полю)
- каждая запись из множества FACTURETRANS_RU ссылается на 1 запись в FACTUREJOUR_RU - это может быть одна и та же запись(FACTUREJOUR_RU.FACTUREID=FACTURETRANS_RU.FACTUREID, MODULE фиксирован - есть уникальный индекс)

= Таком образом выбираются только необходимые данные от меньшего к большему (нет ибыточной выборки) - Не вижу более оптимального плана для данного запроса.
2) отсутствие хинтов,на мой взгляд, требует не менее пристального внимания DBA
3) поработаю над сиквелом.
4) буду знать, даже визуально приятнее читать условия к конкретному join (в общем то следовал схеме запроса DIS слоя)

Цитата:
Сообщение от mazzy Посмотреть сообщение
Про recId и TableId тоже писали. Суть в том, что TableId - аксаптовское поле, не хранимое в базе СКЛе. Это значит, что использование TableId может привести к тому, что таблица исчезнет из SQL-запроса.
это я и пытался довести в сообщении о счетчике сиквела 'page lookups/sec', а вот таблица из запроса никуда не исчезнет (с чего бы ей исчезать из inner join-ов)
Цитата:
Сообщение от mazzy Посмотреть сообщение
Обратите внимание на порядок полей в условиях.
1. Порядок полей должен по возможности совпадать с порядком полей в индексе (в противном случае SQL должен выполнить доп-работу)
учту.

Цитата:
Сообщение от mazzy Посмотреть сообщение
2. Если у вас задействуется несколько индексов, то сначала укажите самый селективный (см. factureTrans)
не совсем понял.

Цитата:
Сообщение от mazzy Посмотреть сообщение
3. Обратите внимание на проверку на модуль. Лучше сравните с константой, нежели поля таблиц
может быть - сиквел подобную подстановку сам делает.
__________________
--- SHiSHok

Последний раз редактировалось SHiSHok; 17.08.2007 в 01:05.
Теги
axapta, faq, запрос (query), производительность

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Производство. Запросы\Развертывание\Обработка не дает нужный результат e@gle DAX: Функционал 11 11.05.2007 18:10
Сложные запросы в RLS Ruff DAX: Администрирование 12 30.08.2005 18:02
Запросы в Аксапта ibc DAX: Программирование 5 08.08.2005 22:47
Разные запросы в 2-х и 3-х уровневой конфигурациях. Что делать?! Anais DAX: Программирование 12 04.11.2004 12:47
Сложные while select-запросы или вложенные циклы Atani DAX: Программирование 10 03.02.2004 13:46

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

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

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