Показать сообщение отдельно
Старый 31.08.2009, 13:19   #12  
ena_ax is offline
ena_ax
Участник
 
254 / 46 (2) +++
Регистрация: 06.12.2006
Цитата:
Сообщение от AX2009 Посмотреть сообщение
У вас в заказах строк сколько?
есть ли одинаковые номенклатуры?
Количество строк в Заказе порядка 10, одинаковых номенклатур нет.

Цитата:
Сообщение от sukhanchik Посмотреть сообщение
Есть еще в Tracer такая кнопочка - План исполнения, а затем Рассчитать новый план - там показывается по какому индексу идет выборка.

Для начала попробуйте в индексе \Data Dictionary\Tables\InventSum\Indexes\ClosedItemDimIdx поставить первым полем ItemId, а вторым Closed.

А также скажите - какие индексы у Вас на таблице InventSum (интересует список полей по индексам с учетом положения поля в индексе). Плюс скажите по какому индексу ведется выборка по InventSum.

Общие правила такие:
1. Поля, в которых содержится большее количество разнородной информации должны быть раньше в индексе. Очевидно, что в ItemId содержится больше разнородной информации, чем в Closed
2. Наибольшее количество полей с наибольшим количеством разнородной информации, участвующие в предложениях Where, Join, Group by, Order by запроса должны присутствовать в индексе. При этом БД должна правильно выбрать индекс (не запутаться в многообразии). Неправильно выбранный индекс приведет к более долгому исполнению запроса. Например, наличие енума в индексе на производительность может не повлиять (мало разнородной информации), но может повлиять на выбор индекса.
3. Увеличение количества индексов на таблице увеличивает время на вставку записей.
Таблица InventSum без модификаций. Привожу индексы:
1. ClosedItemDimIdx - по рекомендации выставил порядок полей ItemId, Closed
2. ItemDimIdx - ItemId, InventDimId
3. DimIdIdx - InventDimId, Closed

План запроса показал использование индексов ItemDimIdx, DimIdIdx.

Последний раз редактировалось ena_ax; 31.08.2009 в 13:27.