Показать сообщение отдельно
Старый 17.03.2010, 23:42   #53  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,429 / 1772 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
Цитата:
Сообщение от Ace of Database Посмотреть сообщение
... В приведенном мною примере сервер быстро найдет складские проводки по коду журнала - их всего несколько десятков штук, а затем из этих нескольких десятков проводок выберет те, у которых тип - "Перенос". А если написать запрос наоборот, то сервер сначала будет искать все проводки с типом "Перенос" - их могут быть миллиноны.
Цитата:
Сообщение от raz Посмотреть сообщение
Вероятнее всего проблема с изменением порядка полей и последующим ускорением/замедлением запросов лежит в плоскости оптимизатора аксапты, а не sql. В dax3 с какого-то kr оптимизатор аксапты начал сам подставлят индексы в запросы согласно условиям where.
Задумайтесь. Приведённая стратегия оптимизации если и будет действовать, то только в случае отсутствия подходящего индекса Т.е. если SQL Server (или возможно сама аксапта) выберет план запроса, в котором будет использоваться индекс, все условия будут обработаны в том порядке, в котором поля перечислены в индексе (а иначе нельзя, так устроен механизм индексирования). И здаётся мне, на выбор используемого индекса порядок следования условий в WHERE не влияет (можно проверить, но я почти уверен). Следовательно, вообще говорить о влиянии последовательности условий в WHERE на производительность можно только для запросов без индексов! (ну или о той части запроса, которая работает уже после первичной фильтрации по индексу. Но, согласитесь, что оптимизация на этом этапе уже несущественна)