碼農和技術大牛的區別就在於是否知道MySQL的這五個私有語句

MySQL 程序員 技術 前端孤勇老師 前端孤勇老師 2018-01-04

MySQL是非常流行的關係型數據庫,雖然擁有的SQL語法大部分是符合ANSI SQL標準的,但是它自身還是攜帶了很多優秀的、私有的語句和指示符,今天我們就來分析一下。

EXPLAIN

難度指數:★ ★ ★ ★ ★

推薦指數:★ ★ ★ ★ ★

當我們網站或者接口訪問頻率越來越大,這時如果我們的相關SQL語句執行時間很長的話,就很容易造成網站或者接口響應慢的情況,那麼使用explain語句,我們能夠清楚的知道MySQL是怎麼執行我們的SQL語句的,執行某個查詢語句總共查詢了多少條記錄,使用了什麼表以及多表的鏈接順序是怎麼樣的,該查詢使用了哪些索引等等信息,有了這些信息,我們能夠根據多次執行和分析優化我們的數據庫,該建立索引的建索引,該刪除的索引就刪除掉。

FOR UPDATE

難度指數:★ ★ ☆ ☆ ☆

推薦指數:★ ★ ★ ★ ★

有時我們有這樣的一種情況,就是需要將某個SELECT語句查詢的行進行鎖定,防止其他客戶端修改,那麼這個時候,我們可以使用這個指示符來完成。

DELAYED

難度指數:★ ★ ☆ ☆ ☆

推薦指數:★ ★ ★ ★ ★

有時發現我們的產品的某個插入、更新操作不需要立即生效,也就是一些對讀要求高、寫要求不太高的應用,可以使用這個指示符,就是將這個插入或者修改後的數據不是立即寫入到磁盤文件中去,而是等到MySQL數據庫非常空閒的時候再進行寫入的操作,從這裡來看,這個指示符也算是一個小的優化性指示符。

SQL_CACHE

難度指數:★ ★ ☆ ☆ ☆

推薦指數:★ ★ ★ ★ ★

有時我們的產品讀操作非常多,修改頻率比較低,那麼這個時候我們能夠在執行select查詢的時候指定sql_cache這個指示符,這樣該查詢語句和相應的查詢結果將被緩存起來,那麼下次執行同樣的查詢語句時,如果數據沒有發生改變,那麼將直接返回這個緩存的結果給客戶端,從這裡來看,這個查詢語句指示符主要用於一些特性應用場景的優化操作。

ON DUPLICATE KEY UPDATE

難度指數:★ ★ ☆ ☆ ☆

推薦指數:★ ★ ★ ★ ★

我們知道,在MySQL中有一個特殊的語句就是Replace語句,就是當插入的時候,我們發現某個條件(這裡需要注意的是,這裡指的是唯一索引或主鍵)的數據已經存在了,那麼這個時候就先刪除這條數據,然後再插入新的數據,也就是先刪除再插入,但是有時候我們僅僅需要的是,如果存在了僅僅修改某個字段的值,而不是刪除再插入,那麼這個時候可以使用ON DUPLICATE KEY UPDATE來完成。

合理用好上面介紹的知識,一定能夠解決MySQL中的大部分問題,包括部分性能的分析和優化。

相關推薦

推薦中...