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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 03.02.2005, 19:02   #1  
Vadik is offline
Vadik
Модератор
Аватар для Vadik
Лучший по профессии 2017
Лучший по профессии 2015
 
3,631 / 1849 (69) ++++++++
Регистрация: 18.11.2002
Адрес: гражданин Москвы
Цитата:
Изначально опубликовано Nikolaich
exists join существенно медленнее inner, посмотрите на трассировку запросов
- там на сервер посылается подзапрос where exists (то есть тот же select).
В трассировку смотрел. Насчет "существенно" несогласен

Я тут примерчик набросал. Посмотрите плана исполнения. Убедитесь, что наличие WHERE EXISTS() в запросе совсем не означает обязательного его (подзапроса) исполнения для каждой удаляемой строки. Люди, которые сиквелу оптимизатор пишут, тоже незря хлеб едят

PHP код:
set showplan_all on
go

begin tran

delete trans
from bmssa
.LedgerTrans trans
inner join bmssa
.LedgerTable ledger on ledger.AccountNum trans.AccountNum 
where ledger
.dataareaid 'dmo' and trans.DataAreaId 'dmo' and ledger.AccountNum '    01.000'

rollback
go

begin tran

delete trans
from bmssa
.LedgerTrans trans
where trans
.DataAreaId 'dmo' and exists
    
(select 
    
from bmssa.LedgerTable ledger 
    where 
        ledger
.DataAreaid 'dmo' and 
        
ledger.AccountNum trans.AccountNum and
        
ledger.AccountNum '    01.000')

rollback tran
go 
 


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

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

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