oracle sql 优化

oracle sql optimization

我有这个查询:

SELECT sd.sdt_service_type,
       sd.sdt_status,
       count(*) col_count
FROM mci_service_data sd
WHERE
     sd.sdt_version = 1
     AND sd.sdt_type = 'MMSP'
     AND sd.sdt_status in (?)
     AND(sd.STD_OPERATION_FLAG is null OR sd.STD_OPERATION_FLAG not like 'mark%')
     AND sd.sdt_office_id in
     (SELECT op.fld_ofs_id
      FROM mci_ofs_per op
      WHERE op.fld_per_id = ?)
group by sd.sdt_service_type,sd.sdt_status

在 mci_service_data table 上有索引 mci_service_data(sdt_type, sdt_version, sdt_status, sdt_office_id) mci_ofs_per(fld_per_id, fld_ofs_id)。但是这个查询需要超过 10 秒的时间!

那么,这个查询将如何优化和更快?

对于这个查询,我会推荐以下索引:

  • mci_service_data(sdt_type, sdt_version, sdt_status, sdt_office_id)
  • mci_ofs_per(fld_per_id, fld_ofs_id)