|
|
|
|
#1 |
|
Moderator
|
Если используются placeholders (то есть вопросики, а не конкретные значения), статистика по большей части просто не используется. Например - если у тебя в запросе стоит значение statusReceipt==3, система может посмотреть в статистике гистограмму распределения значений и оценить что по этому условию отбирается всего 1-2% таблицы inventTrans. А вот если в запросе стоит statusReceipt==?, то система смотрит что всего поле statusReceipt может принимать 7 возможных значений, соответственно - по этому условию будет отобрана 1/7 от выборки.
Поэтому прежде чем чего-либо делать дальше, рекомендую в этом запросе тупо подставить forceLiterals и посмотреть чего будет... |
|
|
|
|
#2 |
|
----------------
|
Цитата:
Например, сначала вы искали проводки по партии (использовался индекс по партиям), а потом стали искать по ГТД (и опять используется индекс по партиям). Цитата:
прежде чем чего-либо делать дальше, рекомендую в этом запросе тупо подставить forceLiterals и посмотреть чего будет
|
|
|
|
|
#3 |
|
Участник
|
1. Попробуйте убрать из запроса в Аксапте forceNestedLoop
2. Проанализируйте в Managment Studio план выполнения этого запроса в "быстром"/"медленном" варианте и если они различаются, то пропишите в запрос хинт с индексом из "быстрого" плана. 3. В качестве "лома" можно попробовать покрывающий индекс на InventTrans: - ItemId - StatusIssue - StatusReceipt - ConfigId - InventDim - Qty - CostAmountPosted - CostAmountAdjustment Можно дополнить имеющийся индекс, главное использовать такую последовательность полей. PS. Начинать лучше всего, на мой взгляд, с анализа планов выполнения запроса. PS2. А так ли нужна вам себестоимость в форме резервирования, может выкинуть ее? |
|
|
|
|
#4 |
|
Участник
|
Цитата:
|
|
|
|
|
#5 |
|
Участник
|
|
|
|
|
|
#6 |
|
Участник
|
Цитата:
Особенно вот эти поля настораживают. - Qty - CostAmountPosted - CostAmountAdjustment |
|
|
|
|
#7 |
|
Участник
|
Цитата:
Цитата:
В идеале нужно их воткнуть в INCLUDE-поля индекса, но Аксапта это делать не умеет
|
|
|
|
|
#8 |
|
Moderator
|
Цитата:
Сообщение от Wamr
Не согласен с данным утверждением. При первом вызове такого запроса статистика используется и строится корректный план исполнения, а вот при повторном использовании план сохраняется, что и может приводить к подобным эффектам.
Например, сначала вы искали проводки по партии (использовался индекс по партиям), а потом стали искать по ГТД (и опять используется индекс по партиям). а с этим согласен Вообще - когда такие вопросы задают, почти всегда в ветке появляется масса доброхотов с советами построить какие-нить магические индексы, подставить хинт, постучать по дереву, покропить сервер куриной кровью и тп А про то что SQL Server не такой уж тупой сам по себе и кривой план на простых запросах строит не от дурости, а по каким-то внешним причинам никто не задумывается...
Последний раз редактировалось fed; 29.06.2008 в 21:51. |
|
|
|
|
#9 |
|
Участник
|
Спасибо всем.
Действительно, пока попробую повторно внимательно проанализировать планы запросов при нормальной работе и с "тормозами". |
|
|
| Теги |
| ax2.5 |
|
|
Похожие темы
|
||||
| Тема | Ответов | |||
| Создание Lookup формы | 9 | |||
| Крэш на ровном месте | 12 | |||
| setFocus в момент инициализации формы | 3 | |||
| Русская локализация Axapta 3 ? | 59 | |||
| Динамические Lookup формы. | 0 | |||
|