我有這個疑問:的Oracle SQL優化
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表上有 mci_service_data(sdt_type, sdt_version, sdt_status, sdt_office_id)
和mci_ofs_per(fld_per_id, fld_ofs_id)
。但此查詢索引需要時間超過10秒!
那麼,這個查詢將如何優化和更快?
爲什麼''sd.sdt_status而不是'sd.sdt_status ='? ? (如果你提供一個逗號分隔的字符串給綁定變量,那麼這將不起作用,因爲它仍然會被視爲單個字符串而不是多個值。) – MT0
請** [編輯] **你的問題,並添加'創建表問題(包括所有索引)的表格語句以及查詢的執行計劃。 [**格式化文本**](http://stackoverflow.com/help/formatting)請,[無屏幕截圖](http://meta.stackoverflow.com/questions/285551/why-may-i-not上傳問題時的代碼問題/ 285557#285557) –
有多少數據我有2個表?你能告訴我們查詢計劃嗎?以及(?)是什麼意思?數據變化很大? – Moudiz