Показать сообщение отдельно
Старый 26.12.2011, 14:55   #31  
someOne is offline
someOne
Участник
Аватар для someOne
 
173 / 423 (15) +++++++
Регистрация: 11.12.2008
Адрес: Москва
Цитата:
Сообщение от fed Посмотреть сообщение
Очень странно, что перенос склада в inventTrans дал такой прирост производительности. Могу поверить в типичный показатель накладных расходов на джойн двух таблиц в 40-50%. Могу поверить на нетипичные случаи с 200% накладных расходов. Не могу поверить в накладные расходы в 900%
Мне кажется, у вас там просто какая-то беда с планом запроса в стандартной оборотке. Может статистика кривая, может сам сиквел глючит почему-то, может индексы не перестраивались несколько лет. В общем - попробуйте план запроса выщемить и выложить.
Пожалуй соглашусь с этим.
Вот пример из реальной базы
inventTrans - 22 млн записей
inventDim - 4 млн записей

Включены аналитики
- склад (~ 10 складов, по каждому из складов примерно пропорциональной движение товара по количеству операций)
- партия
- ячейка

запрос, код которого ниже (вызывается одним из наших отчетов Аксапта)
X++:
Use Axapta;

SELECT SUM(A.QTY),
SUM(A.COSTAMOUNTPOSTED),
SUM(A.COSTAMOUNTADJUSTMENT),
A.ITEMID,
A.DIRECTION FROM INVENTTRANS A
WHERE
A.DATAAREAID=N'cmp' AND
A.DATEFINANCIAL>={ts '2010-12-01 00:00:00.000'} AND
A.DATEFINANCIAL<={ts '2010-12-31 00:00:00.000'} AND
EXISTS (SELECT 'x' FROM INVENTDIM B WHERE ((B.DATAAREAID=N'cmp') AND ((B.INVENTLOCATIONID=N'Магазин3') AND (A.INVENTDIMID=B.INVENTDIMID))))
GROUP BY A.ITEMID,A.DIRECTION ORDER BY A.ITEMID,A.DIRECTION
Возвращает результат (15 тыс строк) за 1 минуту 12 секунд. Что тут можно еще оптимизировать ?

Вряд ли добавление поля "код склада" в InventTrans как то повлияет на производительность...

Интересно а как с этим у других ?