Собственно нам пожаловались, что если на закладке Аналитика в фильтре карточек задать поставщика и выполнить по всем товарам, то очень долго приходится ждать результата.
Оговорюсь сразу, что та же база стоит и у нас и мы можем протестировать все это у себя. По крайней мере у нас эта база (~50 Гб) в приличном состоянии, у клиента версия СМ 1.024.5 SP5.
У нас 1.24.6 sp3.
TOAD виснет над той же выборкой минут 30, а Супермаг не справился и за полтора часа. Стало оч. интересно, что же там СМ такое делает?
Вывели запрос:
SELECT tmain.article, tmain.name, tmain.accepted, tmain.datatype,
tmain.datasubtype, tmain.scaleload, tmain.cashload, tmain.receiptok,
tmain.cardcomment
FROM supermag.smcard tmain
WHERE EXISTS (SELECT /*+ INDEX (s smspec_art) */ *
FROM supermag.smdocuments d, supermag.smspec s
WHERE s.doctype = d.doctype
AND s.docid = d.id
AND s.doctype = 'WI'
AND d.opcode = 0
AND s.article = tmain.article
AND d.docstate IN (2, 3)
AND d.clientindex = 284)
ORDER BY tmain.article
Вроде небольшой запрос, но вот оператор EXISTS настораживает...
Просто немного переписали запрос...
SELECT tmain.article, tmain.name, tmain.accepted, tmain.datatype,
tmain.datasubtype, tmain.scaleload, tmain.cashload, tmain.receiptok,
tmain.cardcomment
FROM supermag.smcard tmain
WHERE tmain.article in (SELECT /*+ INDEX (s smspec_art) */ s.article
FROM supermag.smdocuments d, supermag.smspec s
WHERE s.doctype = d.doctype
AND s.docid = d.id
AND s.doctype = 'WI'
AND d.opcode = 0
AND s.article = tmain.article
AND d.docstate IN (2, 3)
AND d.clientindex = 284)
ORDER BY tmain.article
Не успели моргнуть и глазом, а результат выполнения уже на экране.
Причем тот же.