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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

MySQL之SQL优化详解(二)

發(fā)布時(shí)間:2025/4/16 数据库 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 MySQL之SQL优化详解(二) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

目錄

  • MySQL之SQL優(yōu)化詳解(二)
    • 1. SQL的執(zhí)行順序
      • 1.1 手寫順序
      • 1.2 機(jī)讀順序
    • 2. 七種join
    • 3. 索引
      • 3.1 索引初探
      • 3.2 索引分類
      • 3.3 建與不建
    • 4. 性能分析Explain

MySQL之SQL優(yōu)化詳解(二)

1. SQL的執(zhí)行順序

1.1 手寫順序

?

1.2 機(jī)讀順序

?

?

2. 七種join

?

3. 索引

3.1 索引初探

  • 是什么: 排好序的快速查找數(shù)據(jù)結(jié)構(gòu)

  • 兩個主要的索引結(jié)構(gòu): B+tree 索引和哈希索引。

  • 如何建: 1. ALTER TABLE table_name ADD INDEX index_name (column_list); 2. CREATE INDEX index_name ON table_name (column_list);

?

優(yōu)點(diǎn): 類似大學(xué)圖書館建書目索引,提高了檢索效率,降低了數(shù)據(jù)庫IO,同時(shí)還可以通過索引進(jìn)行排序,降低數(shù)據(jù)排序的成本,降低了CPU的消耗

缺點(diǎn): 雖然索引大大提高了查詢速度,同時(shí)卻會降低更新表的速度,如對表進(jìn)行 insert、update和delete,因?yàn)楦卤頃r(shí)不僅要保存數(shù)據(jù),還要保存一下索引文件每次更新添加了索引列的字段。

?

3.2 索引分類

1.主鍵索引:主鍵是一種唯一性索引,但它必須指定為PRIMARY KEY,每個表只能有一個主鍵

ALTER TABLE table_name ADD PRIMARY KEY (column_list)

2.唯一索引:索引列的所有值都只能出現(xiàn)一次,即必須 唯一,值可以為 空

ALTER TABLE table_name ADD UNIQUE (column_list)

3.普通索引:基本的索引類型,值可以為空,沒有唯一性的限制

ALTER TABLE table_name ADD INDEX index_name (column_list);

4.全文索引: 全文索引的索引類型為 FULLTEXT,全文索引只能創(chuàng)建在CHAR、VARCHAR、TEXT類型的字段上。查詢數(shù)據(jù)量較大的字符串類型字段時(shí),使用全文索引可以提高查詢速度

ALTER TABLE table_name ADD FULLTEXT INDEX index_name(column_list);

?

3.3 建與不建

對于MySQL的索引創(chuàng)建,我們經(jīng)常有疑慮,那么什么時(shí)候該建什么時(shí)候不該建呢?

哪些情況需要創(chuàng)建索引

  • 主鍵自動創(chuàng)建唯一索引

  • 頻繁作為查詢條件的字段應(yīng)該創(chuàng)建索引

  • 查詢中與其它表關(guān)聯(lián)的字段,外鍵關(guān)系建立索引

  • 查詢中排序的字段,排序字段若通過索引去訪問將大大提高排序速度

  • 查詢中統(tǒng)計(jì)或者分組字段

  • ?

    哪些情況不需要建索引

  • 頻繁更新的字段不適合創(chuàng)建索引
  • where 條件用不到的字段不適合創(chuàng)建索引
  • 注意,如果某個數(shù)據(jù)列包含許多重復(fù)的內(nèi)容,為它建立索引就沒有太大的實(shí)際效果
  • ?

    4. 性能分析Explain

    Explain簡稱執(zhí)行計(jì)劃,使用Explain關(guān)鍵字可以模擬優(yōu)化器執(zhí)行SQL查詢語句

    用法:explain + SQL


    ?

    1. id:select查詢的序列號,包含一組數(shù)字,表示查詢中執(zhí)行select子句或操作表的順序

    ① id 相同執(zhí)行順序由上至下

    ② id 不同,如果是子查詢,id的序號會遞增,id值越大優(yōu)先級越高,越先被執(zhí)行

    ③ id相同不相同,不相同

    注:id如果相同,可以認(rèn)為是一組,從上往下順序執(zhí)行;在所有組中,id值越大,優(yōu)先級越高,越先執(zhí)行

    ?

    2. select_type:查詢的類型,主要是用于區(qū)分 普通查詢、聯(lián)合查詢、子查詢等的復(fù)雜查詢

    • simple:簡單的select 查詢,查詢中不包含子查詢或者 union
    • primary:查詢中若包含任何復(fù)雜的子部分,最外層查詢則被標(biāo)記為
    • subquery:在select或where列表中包含了子查詢
    • derived:在from 列表中包含的子查詢被標(biāo)記為 derived(衍生)
    • union:若第二個select出現(xiàn)在之后,則被標(biāo)記為 union(若union 包含from 子句的子查詢中,外層select將被標(biāo)記為:derived)
    • union result:從union 表獲取結(jié)果的 select

    ?

    3. table:顯示這一行的數(shù)據(jù)是關(guān)于哪張表的

    4. type:訪問類型排列,顯示查詢使用了何種類型

    從好到壞,system > const > eq_ref > ref > range > index > all

    • system:表只有一行記錄(等于系統(tǒng)表),這是const 類型的特列,平時(shí)不會出現(xiàn),這個也可以忽略不計(jì)
    • const:表示通過索引一次就找到了,const 用于比較 primary key或者unique索引
    • eq_ref:唯一性索引掃描,對于每個索引鍵,表中只有一條記錄與之匹配。常見于主鍵或唯一索引掃描
    • ref:非唯一性索引掃描,返回匹配某個單獨(dú)值的所有行,本質(zhì)上也是一種索引訪問
    • range:只檢索給定范圍的行,使用一個索引來選擇行。key 列顯示使用了哪個索引,一般就是在你的where語句中出現(xiàn)了 between、<、>、in等的查詢
    • index:Full Index Scan,index與 all 區(qū)別為 index 類型只遍歷索引樹
    • all:Full Table Scan,將遍歷全表以找到匹配的行

    ?

    5. possible_key:顯示可能應(yīng)用在這張表的索引,一個或多個。(但不一定被實(shí)際應(yīng)用)

    6. key:實(shí)際使用的索引,如果為null,則沒有使用索引。

    查詢中若使用了覆蓋索引,則該索引與查詢的select字段重疊

    ?

    7. key_len:表示索引中使用的字節(jié)數(shù)

    8. ref:顯示索引的哪一列被使用,如果可能的話,是一個常數(shù),哪些列或常量被用于查找索引列上的值

    注:由key_len可知t1表的idx_col1_col2被充分使用,col1匹配t2表的col1,col2匹配了一個常量,即 'ac'

    ?

    9. rows:根據(jù)表統(tǒng)計(jì)信息及索引選用情況,大致估算出找到所需的記錄所需要讀取的行數(shù)

    10. extra:包含不適合在其他列中顯示但十分重要的額外信息

    • Using filesort (劣): mysql 會對數(shù)據(jù)使用一個外部的索引排序(文件排序),而不是照表內(nèi)的索引順序進(jìn)行讀取

    ?

    • Using temporary (劣):使了用臨時(shí)表保存中間結(jié)果,MySQL在對查詢結(jié)果排序時(shí)使用臨時(shí)表。常見于排序 order by 和分組查詢 group by

    ?

    • Using index (優(yōu)):表示相應(yīng)的select操作中使用了覆蓋索引(Covering Index),避免訪問了表的數(shù)據(jù)行,效率不錯!
    • Using where:表明使用了where 過濾
    • Using join buffer:表明使用了連接緩存
    • impossible where:where子句的值總是false,不能用來獲取任何數(shù)據(jù)

    ?

    • select tables optimized away:select操作已經(jīng)優(yōu)化到不能再優(yōu)化了(MySQL根本沒有遍歷表或索引就返回?cái)?shù)據(jù)了
    • distinct:在select部分使用了distinc關(guān)鍵字

    心法:

    針對explain命令生成的執(zhí)行計(jì)劃,這里有一個查看心法。我們可以先從查詢類型type列開始查看,如果出現(xiàn)all關(guān)鍵字,后面的內(nèi)容就都可以不用看了,代表全表掃描。再看key列,看是否使用了索引,null代表沒有使用索引。然后看rows列,該列用來表示在SQL執(zhí)行過程中被掃描的行數(shù),該數(shù)值越大,意味著需要掃描的行數(shù)越多,相應(yīng)的耗時(shí)越長,最后看Extra列,在這列中要觀察是否有Using filesort 或者Using temporary 這樣的關(guān)鍵字出現(xiàn),這些是很影響數(shù)據(jù)庫性能的。

    轉(zhuǎn)載于:https://www.cnblogs.com/dwlovelife/p/11110215.html

    總結(jié)

    以上是生活随笔為你收集整理的MySQL之SQL优化详解(二)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 日本一区二区高清不卡 | 亚洲精品无码久久久 | 少妇丰满尤物大尺度写真 | 久久精品一区二区国产 | 天天射干 | www.youjizz.com在线 | 欧美日韩国产精品一区 | 日韩在线视频免费播放 | 2021毛片| 日本免费黄网站 | 国产玖玖 | 国产精品视频在线免费观看 | 亚洲日本中文 | 午夜国产福利在线观看 | 欧洲一区二区三区 | 日本免费一区二区三区四区五六区 | 日韩欧美国产成人精品免费 | 亚洲无线视频 | 精品熟妇视频一区二区三区 | 黄大色黄大片女爽一次 | 亚洲av综合色区无码另类小说 | 欧美污视频在线观看 | 操出白浆视频 | 亚洲xx网| 好吊操视频这里只有精品 | 波多野结衣在线影院 | 成人精品免费 | 超91在线 | 日韩视频免费观看高清 | 男生裸体视频 | 日韩中文字幕有码 | 女女百合高h喷汁呻吟玩具 www.亚洲一区 | 精品欧美一区二区三区免费观看 | 精品国产欧美 | 国产免费中文字幕 | 国产成人无码精品亚洲 | 深夜国产福利 | 亚洲码无人客一区二区三区 | 午夜免费影院 | 麻豆视频在线观看免费网站 | 欧美日韩国产一区二区在线观看 | 日韩专区欧美专区 | 久草老司机 | 亚洲码在线观看 | 岛国精品一区 | 在线免费日韩av | 久久国语精品 | 亚洲综合成人在线 | 国产精品国产三级国产在线观看 | 丰满少妇被猛烈进入高清播放 | 精品嫩模一区二区三区 | 日韩av高清在线播放 | 超碰98在线观看 | 亚洲自拍偷拍在线 | 美女mm131爽爽爽免费动视频 | 激情综合站 | 国产精品天美传媒 | 花房姑娘免费观看全集 | 麻豆视频二区 | √天堂中文官网8在线 | 国产性色视频 | 在线观看一区二区三区视频 | 日韩福利片在线观看 | 无码人妻丰满熟妇啪啪网站 | 少妇按摩一区二区三区 | 亚洲一区免费在线 | 激情网络 | 51精产品一区一区三区 | 亚洲av无码一区二区乱子伦 | sese亚洲 | 宅男午夜在线 | 欧美激情亚洲激情 | 色哟哟在线视频 | 一本色道久久88亚洲精品综合 | 黄色小说视频网站 | 女人高潮娇喘声mp3 乱色视频 | 日韩精品中文字幕一区 | 77久久 | 国产三极片 | 精品国产69 | 国产福利片在线观看 | 高跟鞋和丝袜猛烈xxxxxx | 毛片一级片 | 狠狠干人人干 | 先锋影音一区二区 | 黄色美女一级片 | 超碰女| 国产探花在线精品一区二区 | 国产情侣自拍小视频 | 亚洲国产成人久久 | 99re国产在线 | 伊人久久大香 | 神马午夜91 | 日本爱爱免费视频 | 人妻体内射精一区二区 | 亚洲av无码国产精品麻豆天美 | 久久精品999 | 成人妇女淫片aaaa视频 | 大桥未久在线视频 |