我通過分析正採取多一點時間預期,我想調整它的一些下面的查詢。查詢的目的是從給定的device_id的Messages表中獲取最後3小時的數據,並通過上次消息接收(time desc)對結果進行排序。目前數據庫上有一個複合索引,看起來並不理想。任何索引或查詢語法都會更改建議以加快此查詢的速度?性能調優Oracle查詢
消息表結構:
色譜柱:
id (auto incremented PK NUMBER(10))
device_id
model_id
state
creation_date (DATE when row was inserted)
time (unix time message was transmitted)
//a bunch of other columns omitted
索引:
id
device_id, model_id, state (composite index)
查詢:
select * from messages where device_id='0-12345678' and creation_date > sysdate-3/24 order by time desc
什麼是查詢計劃?什麼是綜合指數?它是'device_id,creation_date'上的組合索引嗎?此查詢返回多少行?它運行得有多快?你需要多久才能運行? –
'messages'表中有多少行? 'device_id'有多獨特?你根據沒有被索引的列選擇數據('device_id','creation_date'),難怪查詢很慢。 – npe
消息表有6,354,837行。 Device_id可以具有多個關聯的消息,因此在該表中它不是唯一的。我沒有創建索引,這就是我問的原因。我相信索引應該改變 – c12