10.01.2008, 12:10 | #1 |
Участник
|
Оптимизация запроса
День добрый! Не подскажут ли знатоки, есть ли альтернатива по тяжелым запросам использующие exists join? Есть следующий запрос (см.ниже), использующий тяжелые таблицы (inventtrans>4 млн строк, inventdim>300 тыс, табл. А и B >500 тыс). Сейчас время отчета с использованием этого запроса более 40 мин (при выбранном периоде 1 мес)
Можно ли модифицироать запрос? Будем считать, что индексы расставлены. Использование forcenestedloop forceselectorder ненамного сократило время. Прошу прощения, на неформатированность запроса while select inventTrans where ((inventTrans.TransType == InventTransType::Purch) || (inventTrans.TransType == InventTransType::Sales)) && (includeEstimated || ( ! includeEstimated && ((inventTrans.StatusReceipt == StatusReceipt::None && inventTrans.StatusIssue == StatusIssue::Sold) || (inventTrans.StatusReceipt == StatusReceipt::Purchased && inventTrans.StatusIssue == StatusIssue::None)))) && (inventTrans.DateFinancial && inventTrans.DateFinancial >= dateFrom && inventTrans.DateFinancial <= dateTo) || (!inventTrans.DateFinancial && inventTrans.DateExpected >= dateFrom && inventTrans.DateExpected <= dateTo)) join [fields] from inventTable where inventTable.ItemId == inventTrans.ItemId && inventTable.ItemType != ..... join [fields] from inventDim where inventDim.InventDimId == inventTrans.InventDimId && (.........) exists join [fields] from A where A.[X] == inventDim.[Y] join B where B.InventDimId == A.InventDimId && ((B.DateFinancial && B.DateFinancial >= dateFrom && B.DateFinancial <= dateTo) || ( !B.DateFinancial && B.DateExpected >= dateFrom && B.DateExpected <= dateTo)) Последний раз редактировалось oleg_e; 31.01.2008 в 12:59. |
|
Теги |
оптимизация, производительность, ax3.0 |
|
Похожие темы | ||||
Тема | Ответов | |||
Оптимизация запроса - ranges | 13 | |||
Изменить план выполнения запроса | 2 | |||
Быстродействие запроса | 1 | |||
Опять оптимизация запроса | 3 | |||
Оптимизация запроса | 1 |
|