日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

MySQL面试题 | 附答案解析(十五)

發布時間:2023/11/27 生活经验 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 MySQL面试题 | 附答案解析(十五) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

SQL優化

1. 如何定位及優化SQL語句的性能問題?創建的索引有沒有被使用到?或者說怎么才可以知道這條語句運行很慢的原因?

對于低性能的SQL語句的定位,最重要也是最有效的方法就是使用執行計劃,MySQL提供了explain命令來查看語句的執行計劃。我們知道,不管是哪種數據庫,或者是哪種數據庫引擎,在對一條SQL語句進行執行的過程中都會做很多相關的優化,對于查詢語句,最重要的優化方式就是使用索引。而執行計劃,就是顯示數據庫引擎對于SQL語句的執行的詳細情況,其中包含了是否使用索引,使用什么索引,使用的索引的相關信息等。

執行計劃包含的信息 id 有一組數字組成。表示一個查詢中各個子查詢的執行順序;

(1)id相同執行順序由上至下。

(2)id不同,id值越大優先級越高,越先被執行。

(3)id為null時表示一個結果集,不需要使用它查詢,常出現在包含union等查詢語句中。

select_type 每個子查詢的查詢類型,一些常見的查詢類型。

table 查詢的數據表,當從衍生表中查數據時會顯示 x 表示對應的執行計劃id partitions 表分區、表創建的時候可以指定通過那個列進行表分區。舉個例子:

type(非常重要,可以看到有沒有走索引) 訪問類型

(1)ALL 掃描全表數據

(2)index 遍歷索引

(3)range 索引范圍查找

(4)index_subquery 在子查詢中使用 ref

(5)unique_subquery 在子查詢中使用 eq_ref

(6)ref_or_null 對Null進行索引的優化的 ref

(7)fulltext 使用全文索引

(8)ref 使用非唯一索引查找數據

(9)eq_ref 在join查詢中使用PRIMARY KEYorUNIQUE NOT NULL索引關聯。

possible_keys 可能使用的索引,注意不一定會使用。查詢涉及到的字段上若存在索引,則該索引將被列出來。當該列為 NULL時就要考慮當前的SQL是否需要優化了。

key 顯示MySQL在查詢中實際使用的索引,若沒有使用索引,顯示為NULL。

TIPS:查詢中若使用了覆蓋索引(覆蓋索引:索引的數據覆蓋了需要查詢的所有數據),則該索引僅出現在key列表中

key_length 索引長度

ref 表示上述表的連接匹配條件,即哪些列或常量被用于查找索引列上的值

rows 返回估算的結果集數目,并不是一個準確的值。

extra 的信息非常豐富,常見的有:

(1)Using index 使用覆蓋索引

(2)Using where 使用了用where子句來過濾結果集

(3)Using filesort 使用文件排序,使用非索引列進行排序時出現,非常消耗性能,盡量優化。

(4)Using temporary 使用了臨時表 sql優化的目標可以參考阿里開發手冊

【推薦】SQL性能優化的目標:至少要達到 range 級別,要求是ref級別,如果可以是consts最好。

說明:1) consts 單表中最多只有一個匹配行(主鍵或者唯一索引),在優化階段即可讀取到數據。

2) ref 指的是使用普通的索引(normal index)。

3) range 對索引進行范圍檢索。反例:explain表的結果,type=index,索引物理文件全掃描,速度非常慢,這個index級別比較range還低。

最后,小編分類整理了許多java進階學習材料和BAT面試給熱愛IT行業的你,如果需要資料的請轉發此文章后再私聊小編回復【java】就能領取2019年java進階學習資料和BAT面試題以及《Effective Java》(第3版)電子版書籍。也可以加群:712263501領取海量學習資料進行學習。

總結

以上是生活随笔為你收集整理的MySQL面试题 | 附答案解析(十五)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。