日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) >

MySQL重温笔记-索引

發(fā)布時(shí)間:2025/6/17 53 豆豆
生活随笔 收集整理的這篇文章主要介紹了 MySQL重温笔记-索引 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

  mysql分客戶端、服務(wù)層、存儲(chǔ)引擎層,而索引的實(shí)現(xiàn)就是在存儲(chǔ)引擎層,因此各個(gè)不同的存儲(chǔ)引擎之間的索引都有細(xì)微的差別。

【B-Tree索引】

  

  • MyIsam使用前綴壓縮技術(shù)使得索引更小,Innodb則按照原數(shù)據(jù)格式進(jìn)行存儲(chǔ)
  • MyIsam索引通過數(shù)據(jù)的物理位置引用被索引的行,Innodb則根據(jù)主鍵引用被索引的行。
  • 索引樹中的節(jié)點(diǎn)是有序的,所以索引適合全鍵值、鍵值范圍或鍵前綴查找(最左)。因?yàn)槭琼樞虻?#xff0c;所以也適合排序。
  • 聯(lián)合索引的索引順序很重要

?

【哈希索引】

  • 基于哈希實(shí)現(xiàn)。
  • 只有Memory引擎顯式支持哈希索引
  • 哈希索引只包含哈希值和行指針,而不存儲(chǔ)字段值
  • 哈希索引數(shù)據(jù)并不是按照索引值順序存儲(chǔ)的
  • 哈希索引不支持部分索引列匹配查找,哈希索引值是使用索引列全部?jī)?nèi)容來計(jì)算哈希值的
  • 哈希索引只支持等值比較查詢
  • 訪問哈希索引的數(shù)據(jù)比較快,但是有多哈希值沖突的風(fēng)險(xiǎn)。

?

【全文索引】

  查找匹配的是文本中的關(guān)鍵詞,類似于搜索引擎


?

【索引的優(yōu)點(diǎn)】

  • 減少表數(shù)據(jù)的掃描數(shù)量,不用全表掃描了
  • 避免排序和臨時(shí)表【索引按順序的,節(jié)省了排序時(shí)間】。
  • 將隨機(jī)I/O變?yōu)轫樞騃/O

【重點(diǎn)】【高效實(shí)用索引的技巧】

  • 在索引列不要進(jìn)行計(jì)算,例如下 select student_id from student where student_id + 1 =5;

    ?

  • 給text類型添加索引時(shí),可以使用前綴索引,就是將值的內(nèi)容截取一部分作為索引。

  • ?聯(lián)合索引(多列索引)要注意列順序。一般是考慮的因素是,使用率最高的列放到索引前列,避免隨機(jī)IO,排序。

  • 聚簇索引,表示數(shù)據(jù)行和相鄰的鍵值緊湊的存儲(chǔ)在一起。innodb默認(rèn)會(huì)拿主鍵作為聚簇索引,若沒有主鍵,就是用非空索引,主鍵為順序的整數(shù)更加有利。
  • 表中的索引越多,插入的速度越慢,準(zhǔn)確的說是insert? update delete?
  • 索引可以讓查詢鎖定更少的行
  • 確保任何group by和order by中的表達(dá)式只涉及到一個(gè)表中的列。
  • 除非確實(shí)需要服務(wù)器小蟲重復(fù)的行,否則一定要使用union all,mysql是通過創(chuàng)建臨時(shí)表的方式來執(zhí)行union查詢。

  • ?

    【MySQL能夠使用三種方式應(yīng)用WHERE條件,從好到壞的順序?yàn)椤?/p>

  • 在索引中使用where條件來過濾不匹配的記錄,在存儲(chǔ)引擎層完成
  • 使用索引覆蓋掃描來返回記錄,直接從索引中過濾不需要的記錄并返回命中的結(jié)果,在服務(wù)器層完成的
  • 從數(shù)據(jù)表返回?cái)?shù)據(jù)。
  • ?


    ?

    【查詢的執(zhí)行流程】

      

    ?

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

    總結(jié)

    以上是生活随笔為你收集整理的MySQL重温笔记-索引的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

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