查詢解析MySQL mysql內部查詢過程詳解

2021-10-17 22:08:25 字數 966 閱讀 4061

1.客戶端通過聯結器與mysql連線

2.快取

連線建立後,執行查詢語句的時候,會先查詢快取,mysql 會先校驗這個 sql 是否執行過,以 key-value 的形式快取在記憶體中,key 是查詢預計,value 是結果集。如果快取 key 被命中,就會直接返回給客戶端,如果沒有命中,就會執行後續的操作,完成後也會把結果快取起來,方便下一次呼叫。當然在真正執行快取查詢的時候還是會校驗使用者的許可權,是否有該錶的查詢條件。

mysql 查詢不建議使用快取,因為查詢快取失效在實際業務場景中可能會非常頻繁,假如你對乙個表更新的話,這個表上的所有的查詢快取都會被清空。對於不經常更新的資料來說,使用快取還是可以的。

所以,一般在大多數情況下我們都是不推薦去使用查詢快取的。

mysql 8.0 版本後刪除了快取的功能,官方也是認為該功能在實際的應用場景比較少,所以乾脆直接刪掉了。

3.分析器

1.詞法 分析: 分析出關鍵字比如  select where from   group by 等等

2.語法分析 判斷寫的語句有沒有語法錯誤。

4.優化器

它認為的最優的執行方案去執行(有時候可能也不是最優,這篇文章涉及對這部分知識的深入講解),比如多個索引的時候該如何選擇索引,多表查詢的時候如何選擇關聯順序等。

例子:select * from tb_student  a where a.age='18' and a.name=' 張三 ';

確定方案:

a. 先查詢學生表中姓名為「張三」的學生,然後判斷是否年齡是 18。

b. 先找出學生中年齡 18 歲的學生,然後再查詢姓名為「張三」的學生。

根據自己的優化演算法選擇乙個較好的方案。

5.執行器。有redo-log用於資料的恢復和binlog用於資料庫主從複製。 查詢到滿足條件的所有資料並返回。

MySQL Mysql模糊查詢like提速優化

一般情況下like模糊查詢的寫法為 field已建立索引 select column from table where field like keyword 上面的語句用explain解釋來看,sql語句並未用到索引,而且是全表搜尋,如果在資料量超大的時候,可想而知最後的效率會是這樣 對比下面的寫法...

MySQL MySQL 05 高階查詢(2)

select 查詢列表 from 表.limit offset size offset 要顯示條目的起始索引,從0開始 size 顯示數量 語句放最後使用select from employees limit0,5 將多個查詢結果合併成乙個結果 select 語句1 union select 語句2...

硬碟7200mysql MySQL服務查詢優化

一 服務介面效能測試相關 tp指標 如tp50 指在乙個時間段內 如5分鐘 統計該方法每次呼叫所消耗的時間,並將這些時間從小到大的順序進行排序,取第50 的那個值作為tp50值 配置此監控指標對應的報警閾值後,需要保證在這個時間段內該方法所有呼叫的消耗時間至少有50 的值要小於此閾值,否則系統會報警...