6、MySQL執行器?
此階段MySQL會先驗證是否具有執行SQL的許可權,無許可權則會返回錯誤提示,有則開啟表繼續執行,執行器會根據表的引擎定義去使用這個引擎提供的介面。
7、臨時表如何刪除?
臨時表:MySQL執行SQL過程中通常會臨時建立一些儲存中間結果集的表,此表只對當前連線可見,在連線關閉時,此表會被刪除並釋放所有表空間。
臨時表可分為兩種,一種是記憶體臨時表(使用MEMORY儲存引擎),一種是磁碟臨時表(使用MyISAM儲存引擎)。
MySQL會產生臨時表的幾個場景:
使用UNION/UNION ALL查詢(聯合查詢):都用於聯合查詢,UNION會去掉兩表中的重複資料,相當於對結果集做了一下discount去重操作,UNION ALL則不會排重,返回所有資料。
使用TEMPTABLE演算法或是UNION查詢中的檢視操作,TEMPTABLE是一種建立臨時表的演算法,將結果集放入放到臨時表中,這也就是說,MySQL要先建立好這個臨時表,之後將結果集放入,之後使用此表進行對應查詢。
ORDER BY 和GROUP BY 子句不一樣時也會產生臨時表。
DISTINCT 查詢且加上ORDER BY。
SQL如查詢結果集較小時,用SQL_SMALL_RESULT選項最佳化,產生臨時表。
FROM 中的子查詢。
EXPLAIN 檢視執行計劃結果的Extra 列,如使用Using Temporary 就表示會用到臨時表。
8、union和union all需注意的點?
透過union連線的SQL分別單獨取出的列數必須相同,使用union時,多個相等的列將會被合併,由於比較耗時,一般不直接使用union進行合併,通常採用union all。
9、MyISAM支援的索引型別?
Full-Text索引(全域性索引):未解決針對文字的模糊查詢效率低下的問題。
B-Tree索引:所有索引節點都按平衡樹的資料結構來儲存,所有索引資料節點都在葉子節點。
R-Tree索引:用於儲存空間和多維資料的欄位做索引,目前MySQL僅支援geometry型別欄位作索引,相對於B-Tree,R-Tree的優勢在於範圍查詢。
更多Java乾貨評論回覆【Java】獲取