У меня есть запрос ниже, который требует слишком много времени, и мне нужно оптимизировать производительность запроса. Ни в одной из таблиц нет индекса.
Но теперь для оптимизации производительности запросов я думаю создать index. Но не уверен, в частности, какой отфильтрованный столбец я должен создать индекс. Я думаю, что сгруппирую и подсчитаю количество отдельных записей для всех условий отфильтрованного столбца, а затем решу, какой столбец я должен создать индекс, но не уверен в этом.
Select * from ORDER_MART FOL where FOL.PARENT_PROD_SRCID
IN
(
select e.PARENT_PROD_SRCID
from SRC_GRP a
JOIN MAR_GRP b ON a.h_lpgrp_id = b.h_lpgrp_id
JOIN DATA_GRP e ON e.parent_prod_srcid = b.H_LOCPR_ID
WHERE a.CHILD_LOCPR_ID != 0
AND dt_id BETWEEN 20170101 AND 20170731
AND valid_order = 1
AND a.PROD_TP_CODE like 'C%'
)
AND FOL.PROD_SRCID = 0 and IS_CAPS = 1;
Ниже приведен мой план выполнения запроса:
exists
, но нет оговорки о корреляции. Это выглядит подозрительно. - person Gordon Linoff   schedule 22.08.2017