Разбирался тут с "тяжелыми" запросами и в том числе обнаружил там такое:
PHP код:
UPDATE T1 SET ACCOUNTINGEVENT=5665953399,RECVERSION=4567933
FROM ACCOUNTINGDISTRIBUTION T1 WITH (INDEX(I_7452SOURCEDOCUMENTHEADERIDX))
CROSS JOIN SOURCEDOCUMENTLINE T2
WHERE (((T1.PARTITION=5637144576) AND (T1.ACCOUNTINGEVENT=0)
AND (T1.ACCOUNTINGDATE={ d'2023-05-19'}))
AND (T1.SOURCEDOCUMENTHEADER=5669290320))
AND ((T2.RECID=T1.SOURCEDOCUMENTLINE)
AND (T2.ACCOUNTINGSTATUS=4 OR T2.ACCOUNTINGSTATUS=6))
AND (T2.PARTITION=5637144576)
Казалось бы, что с ним не так? А то, что он не использует параметры и плодит, собака, сотни одинаковых планов запроса, которые вымывают из кэша другие более полезные планы запросов. С
помощью "триангуляции" обнаружил, что такие запросы генерятся (в DAX2012 R3) из
AccountingEventSourceDocumentProcessor::updateDistributionsForEvent(). Спрашивается, что мешало смастерить там прямой SQL-запрос с параметрами, чтобы он не плодил кучу одинаковых планов запросов?..