0
我一直在研究一個mysql數據庫,並且具有數據庫的最重要的表之一將在900到1000萬條記錄之間。我能夠做這個查詢:如何優化此選擇查詢? (MySQL)
select MAX(SEN_ID) as SEN_ID from senal group by variable_VAR_ID
但它需要12分鐘。我該如何優化這個查詢?
這個查詢在數據庫很小的時候工作正常,但現在數據庫中有數百萬行,我意識到我應該考慮優化它。
查詢中執行EXPLAIN顯示此:
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE senal index NULL fk_senal_variable1 4 NULL 6333242 Using index
你能解釋更多嗎,所以你的答案變得更有用,我們學到了一些東西?訂單爲什麼重要?爲什麼是一個複合索引,而不是2個單獨的索引? – Jocelyn 2012-08-15 22:27:35
@Jocelyn該命令很重要,因爲MySQL首先使用組合索引的最左邊的字段。因此,在這種情況下,您希望mysql將variable_var_id限定爲唯一的範圍,然後查看SEN_ID以獲取每個唯一variable_var_id的最大值。看看這篇關於優化查詢的文章。[鏈接](http://www.databasejournal.com/features/mysql/article.php/1382791/Optimizing-MySQL-Queries-and-Indexes.htm) – patsweet 2012-08-15 22:54:22
因此,幾個小時後我可以做這樣的改變:我創建了兩個索引:'INDEX'SEN_SUPINDX'('SEN_ID' DESC,'SEN_FECH' DESC,'variable_VAR_ID' DESC)'和'INDEX'VAR_ID''('variable_VAR_ID' DESC)''但我不知道如何正確使用它。 – user1601753 2012-08-16 14:54:52