久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

MySQL查詢語句過程和EXPLAIN語句的基本概念及其優化

148次閱讀
沒有評論

共計 1491 個字符,預計需要花費 4 分鐘才能閱讀完成。

這篇文章主要講解了“MySQL 查詢語句過程和 EXPLAIN 語句的基本概念及其優化”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著丸趣 TV 小編的思路慢慢深入,一起來研究和學習“MySQL 查詢語句過程和 EXPLAIN 語句的基本概念及其優化”吧!

網站或服務的性能關鍵點很大程度在于數據庫的設計(假設你選擇了合適的語言開發框架)以及如何查詢數據上。

我們知道 MySQL 的性能優化方法,一般有建立索引、規避復雜聯合查詢、設置冗余字段、建立中間表、查詢緩存等,也知道用 EXPLAIN 來查看執行計劃。

但對 MySQL 復雜查詢語句執行過程和內部機制,MySQL Optimizer 本身所做優化以及查詢語句調整對性能所產生的影響及其原因知之甚少。

本文試圖對其中的一些關鍵概念如執行過程、索引使用等做比較深入的探討,知其然,知其所以然,

這樣可以避免在原本通過 MySQL 簡單優化就能獲得很好效果的情況下,盲目跟風轉向 NoSQL 存儲或者投入資金升級基礎設施。

工欲善其事,必先利其器,這里首先介紹 MySQL 查詢語句性能分析工具。

MySQL 的 EXPLAIN 命令是用來分析查詢性能的工具,EXPLAIN 的輸出每一行對應于查詢語句中的一張表的執行計劃說明,其輸出列含義如下表:

上表中 type 列是表關聯類型,常見的有如下類型(按關聯查詢效率從高到低排列):

const(常量連接),比如 SELECT * FROM user WHERE id=1;
eq_ref(等值引用),比如 SELECT * FROM user,card WHERE user.id=card.userid;
ref(引用),用于非唯一索引,比如 SELECT * FROM user,card WHERE user.last_name= test
range(范圍),比如 SELECT * FROM tbl_name WHERE key_column
index(索引),根據索引來讀取數據,如果索引已包含了查詢數據,只需掃描索引樹,否則執行全表掃描和 All 類似;
ALL(所有),全表掃描

key 列代表索引(index),rows 表示估計會掃描多少行記錄,

Extra 表示附加信息,常見的有如下幾種(也按查詢效率從高到低排列):

Using index:表示使用索引,如果同時出現 Using where,代表使用索引來查找讀取記錄,如果沒有 Using where,表示索引包含查詢數據,無需額外的查找;
Using where:表示條件查詢,如果 type 列是 ALL 或 index,而沒有出現該信息,則你有可能在執行錯誤的查詢:返回所有數據;
Using filesort:不是“使用文件索引”的含義!filesort 是 MySQL 所實現的一種排序策略,通常在使用到排序語句 ORDER BY 的時候,會出現該信息;
Using temporary:表示為了得到結果,使用了臨時表,這通常是出現在多表聯合查詢,結果排序的場合;

如果 EXPLAIN 出現后面兩個信息(Using filesort,Using temporary),而 rows 又比較大,通常意味著你需要調整查詢語句,或者需要添加索引,總之需要盡量消除這兩個信息。

下面給出 EXPLAIN 結果實例(從用戶檔案表中找出昵稱和性別,按用戶表中的用戶關注者數量排序):

感謝各位的閱讀,以上就是“MySQL 查詢語句過程和 EXPLAIN 語句的基本概念及其優化”的內容了,經過本文的學習后,相信大家對 MySQL 查詢語句過程和 EXPLAIN 語句的基本概念及其優化這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是丸趣 TV,丸趣 TV 小編將為大家推送更多相關知識點的文章,歡迎關注!

正文完
 
丸趣
版權聲明:本站原創文章,由 丸趣 2023-07-28發表,共計1491字。
轉載說明:除特殊說明外本站除技術相關以外文章皆由網絡搜集發布,轉載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 潼南县| 六枝特区| 休宁县| 黔江区| 五河县| 双桥区| 鹤峰县| 伽师县| 禄劝| 西昌市| 德江县| 商丘市| 阿巴嘎旗| 佛冈县| 徐汇区| 垣曲县| 湄潭县| 清丰县| 伊春市| 郴州市| 都江堰市| 泰安市| 谢通门县| 卓资县| 石城县| 绵阳市| 壶关县| 铁力市| 莱西市| 台山市| 长武县| 石嘴山市| 右玉县| 桦川县| 无锡市| 普兰店市| 应用必备| 玉田县| 柞水县| 信丰县| 汾西县|