MySQL面試常見題 (部分)

MySQL面試常見題 (部分)

MySQL面試常見題 (部分)

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】獲取