我得到了一個超過12列的表。這是用於以檢索最新的7條爲HAVING子句中的列建立索引 - MySQL
SELECT * FROM data WHERE user_id IN(12,10,7,1) HAVING continent IN('Europe','America','Australia') AND NOT MATCH(weather) AGAINST('+"[blues]"' IN BOOLEAN MODE) || continent = 'Asia' AND MATCH(weather) AGAINST('+"[purples]"' IN BOOLEAN MODE) ORDER BY tb_id DESC LIMIT 7
總行數超過5 million
和user_id
與tb_id
作爲PRIMARY KEY
索引列的MySQL查詢。當我在SELECT
前使用EXPLAIN
時。 MySQL告訴它將從總共500萬條中讀取超過40萬條記錄。
所以,我應該索引大陸列或它不會幫助在這種情況下?
這裏是EXPLAIN結果
id = 1; select_type = SIMPLE; table = data; possible_keys = user_id; key = user_id; ref = NULL; rows = 582; Extra = Using where, Using filesort
這是爲什麼在HAVING子句中? – Strawberry
「HAVING」子句是後來刪除的「GROUP BY」子句的剩餘部分嗎? 「||」意圖是一個布爾OR還是字符串連接? 「大陸」是否已編入索引?你忘了發佈解釋計劃。 –
大陸沒有編入索引。那就是我想知道的。而HAVING是GROUP BY – sanchitkhanna26