Это текст и план стандартного SQL зароса (новый индекс не отключал, т.к. на план выполнения он не повлиял):
X++:
SELECT T1.RECID,
T2.RECID,
T2.DATAAREAID,
T3.TRANSDATE,
T3.DOCUMENTNUM,
T3.INVOICE,
T3.PAYMID,
T3.VOUCHER,
T3.DATAAREAID,
T3.RECID
FROM SPECTRANS T1 CROSS
JOIN VENDTRANSOPEN T2 CROSS
JOIN VENDTRANS T3
WHERE ((T1.PARTITION=5637144576)
AND (((T1.SPECCOMPANY='DA1')
AND (T1.SPECTABLEID=212))
AND (T1.SPECRECID=17852886295)))
AND ((T2.PARTITION=5637144576)
AND (((T2.DATAAREAID=T1.REFCOMPANY)
AND (T1.REFTABLEID=866))
AND (T2.RECID=T1.REFRECID)))
AND ((T3.PARTITION=5637144576)
AND (T3.RECID=T2.REFRECID
AND (T3.DATAAREAID = T2.DATAAREAID)
AND (T3.PARTITION = T2.PARTITION)))
ORDER BY T1.RECID
А это текст и план отрефакторенного SQL зароса:
X++:
SELECT T1.TRANSDATE,
T1.DOCUMENTNUM,
T1.INVOICE,
T1.PAYMID,
T1.VOUCHER,
T1.RECID,
T2.RECID,
T3.RECID
FROM VENDTRANS T1 CROSS
JOIN VENDTRANSOPEN T2 CROSS
JOIN SPECTRANS T3
WHERE ((T1.PARTITION=5637144576)
AND (T1.DATAAREAID='DA1'))
AND (((T2.PARTITION=5637144576)
AND (T2.DATAAREAID='DA1'))
AND (T2.REFRECID=T1.RECID))
AND ((T3.PARTITION=5637144576)
AND ((((((T3.REFCOMPANY=T2.DATAAREAID)
AND (T3.REFTABLEID=866))
AND (T3.REFRECID=T2.RECID))
AND (T3.SPECCOMPANY='DA1'))
AND (T3.SPECTABLEID=212))
AND (T3.SPECRECID=17852886295)))