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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 16.03.2010, 17:53   #5  
Ace of Database is offline
Ace of Database
Участник
Аватар для Ace of Database
 
877 / 649 (23) +++++++
Регистрация: 14.10.2004
Цитата:
Сообщение от belugin Посмотреть сообщение
Можете написать скрипт, который воспроизведет такое поведение?
Вы наверное испытывате желание подловить меня на чем-то? То, что я предлагаю, работает лишь на сложных запросах. Найти стандартный пример я вам не могу, т.к. это зависит от многих условий, и на разных базах один и тот же запрос будет работать очень быстро или очень медленно.

Вот недавно оптимизированный в моей базе запрос, который зависал.

Запрос до оптимизации
PHP код:
static void Job296(Args _args)
{
    
someLine                            someLine;
    
someTable                           someTable;
    
WMSJournalTrans                     WMSJournalTrans;
    
purchLine                           purchLine;
    
boolean                             _OnlyPosted true;
    ;
        
Select Sum(NetWeight), Sum(InventQtyBoxes), Sum(InventQtyUnitsFrom someLine
            Where someLine
.ItemId == "ItemId"
            
exists join someTable
                
//group by TableId
                
Where
                      
(someTable.SomeType  == SomeEnum::FirstVariant ||
                       
someTable.SomeType  == SomeEnum::SecondVariant   ||
                       
someTable.SomeType  == SomeEnum::ThirdVariant) &&
                      !
someTable.IsCanceled &&
                      
someTable.RecId == someLine.ParentRecId //индексированное поле, уникальное для someTable
            
exists join WMSJournalTrans
                
//group by TableId
                
Where
                      
(WMSJournalTrans.fPosted  ||  !_OnlyPosted) &&
                       
WMSJournalTrans.someTableRecId  == someTable.RecId &&
                       
WMSJournalTrans.inventTransId == purchLine.InventTransId  //индексированное поле
;


Запрос после оптимизации
PHP код:
static void Job296(Args _args)
{
    
someLine                            someLine;
    
someTable                           someTable;
    
WMSJournalTrans                     WMSJournalTrans;
    
purchLine                           purchLine;
    
boolean                             _OnlyPosted true;
    ;
        
Select Sum(NetWeight), Sum(InventQtyBoxes), Sum(InventQtyUnitsFrom someLine
            Where someLine
.ItemId == "ItemId"
            
exists join someTable
                
//group by TableId
                
Where
                      someTable
.RecId == someLine.ParentRecId  && //индексированное поле, уникальное для someTable
                      
(someTable.SomeType  == SomeEnum::FirstVariant ||
                       
someTable.SomeType  == SomeEnum::SecondVariant   ||
                       
someTable.SomeType  == SomeEnum::ThirdVariant) &&
                      !
someTable.IsCanceled
            exists join WMSJournalTrans
                
//group by TableId
                
Where
                       WMSJournalTrans
.inventTransId == purchLine.InventTransId && //индексированное поле
                       
WMSJournalTrans.someTableRecId  == someTable.RecId &&
                      (
WMSJournalTrans.fPosted  ||  !_OnlyPosted);

За это сообщение автора поблагодарили: Logger (3).
Теги
index hint, sql server, оптимизация

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Параметры запросов БД CasperSKY DAX: Программирование 3 22.03.2008 19:32
Владельцы таблиц в БД аксапты AxaptaUser DAX: Администрирование 11 23.05.2007 18:33
Оптимизация запросов psv DAX: Администрирование 6 29.07.2004 23:17
Оптимизация запросов Mystery DAX: Программирование 3 25.02.2004 13:12
Просмотр SQL запросов к БД с помощью файла Log Anton Sk. DAX: База знаний и проекты 3 25.01.2002 16:31

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

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

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