Я написал SQL-код, как показано ниже. Позже добавили несколько индексов в зависимости от того, где условие, но производительность не достаточно. Есть ли общее правило оптимизации для SQL или есть предложения для ниже SQL? Как я могу улучшить свой SQL-код?
SELECT COUNT(*) OVER() AS tot_count,
PG.DESCR as partner,
THAF.APPDATA
FROM transhist th,
trans_app thaf,
partnergroup pg,
partnergrpkey pgk
WHERE TH.CreateDt >= to_date('?startdate', 'yyyymmddhh24mi')
AND TH.CreateDt <= to_date('?enddate', 'yyyymmddhh24mi')+1/1440
AND TH.TRANSSET = '820'
AND THAF.TRANSHISTID = th.id
AND THAF.COLUMNID = 74
AND THAF.APPDATA LIKE '%|?acctNo|%'
AND TH.TRNSLTPARTNERKEY = PGK.DOCHISTPARTNERKEY
AND PG.ID = PGK.PARTNERGROUPID
AND pg.ID IN (?tpValues)
ORDER BY TH.ID;
Индексирование, как показано ниже:
CREATE INDEX TRANS_APP_ALL ON TRANS_APP(TRANSHISTID, COLUMNID, APPDATA);
CREATE INDEX TRANS_CREATEDT ON TRANSHIST(TRANSSET, CREATEDT, TRNSLTPARTNERKEY);