在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

MySQL索引的常用知識點

科技綠洲 ? 來源:Java技術(shù)指北 ? 作者:Java技術(shù)指北 ? 2023-09-30 16:43 ? 次閱讀

索引結(jié)構(gòu):B+樹

索引其實是一種數(shù)據(jù)結(jié)構(gòu)

注意B+樹是MySQL,索引默認的結(jié)構(gòu);一張表至少有一個索引(主鍵索引),是可以有多個索引的

MySQL中的B+Tree

  1. 非葉子節(jié)點也叫內(nèi)部節(jié)點,只存儲 健值(主鍵的值) + 指針(存儲子節(jié)點的地址信息)
    • 主鍵索引:健值(主鍵的值) + 指針(存儲子節(jié)點的地址信息)
    • 非主鍵索引:非主鍵列的值 + 指向下一個節(jié)點的指針(存儲子節(jié)點的地址信息)
  2. 所有的數(shù)據(jù)都存在葉子節(jié)點中;
    • 同時葉子節(jié)點上還存有一個指向相鄰葉子節(jié)點的指針
    • 如果是聚簇索引(主鍵索引),葉子節(jié)點存儲的是實際數(shù)據(jù)
    • 如果是非聚簇索引,則保存的是聚簇索引的索引key,也就是主鍵索引的值;查詢非聚簇索引會有一個回表操作
  3. B+Tree的每個葉子節(jié)點增加了一個指向相鄰葉子節(jié)點的指針,它的最后一個數(shù)據(jù)會指向下一個葉子節(jié)點的第一個數(shù)據(jù),形成了一個有序鏈表的結(jié)構(gòu)。

為什么B+ 樹比B 樹更適合作為索引?

  1. B+ 樹的磁盤讀寫代價更低 B+ 樹的數(shù)據(jù)都集中在葉子節(jié)點,分支節(jié)點 只負責指針(索引);B 樹的分支節(jié)點既有指針也有數(shù)據(jù) 。這將導致B+ 樹的層高會小于B 樹的層高,也就是說B+ 樹平均的Io次數(shù)會小于B 樹。
  2. B+ 樹的查詢效率更加穩(wěn)定 B+ 樹的數(shù)據(jù)都存放在葉子節(jié)點,故任何關(guān)鍵字的查找必須走一條從根節(jié)點到葉子節(jié)點的路徑。所有關(guān)鍵字的查詢路徑相同,每個數(shù)據(jù)查詢效率相當。
  3. B+樹更便于遍歷 由于B+樹的數(shù)據(jù)都存儲在葉子結(jié)點中,分支結(jié)點均為索引,遍歷只需要掃描一遍葉子節(jié)點即可;B樹因為其分支結(jié)點同樣存儲著數(shù)據(jù),要找到具體的數(shù)據(jù),需要進行一次中序遍歷按序來搜索。
  4. B+樹更擅長范圍查詢 B+樹葉子節(jié)點存放數(shù)據(jù),數(shù)據(jù)是按順序放置的雙向鏈表。B樹范圍查詢只能中序遍歷。
  5. B+ 樹占用內(nèi)存空間小 B+ 樹索引節(jié)點沒有數(shù)據(jù),比較小。在內(nèi)存有限的情況下,相比于B樹索引可以加載更多B+ 樹索引。

MyISAM與InnoDB 的區(qū)別

  1. InnoDB支持事務,MyISAM不支持

  2. InnoDB支持外鍵,而MyISAM不支持

  3. InnoDB是聚集索引,數(shù)據(jù)和索引存到同一個文件里;MyISAM是非聚集索引,數(shù)據(jù)和索引不在同一個文件里;都是使用B+Tree作為索引結(jié)構(gòu)

  4. InnoDB不保存表的具體行數(shù),執(zhí)行select count(*) from table時需要全表掃描。而MyISAM用一個變量保存了整個表的行數(shù),執(zhí)行上述語句時只需要讀出該變量即可,速度很快(注意不能加有任何WHERE條件)

    因為InnoDB的事務特性,在同一時刻表中的行數(shù)對于不同的事務而言是不一樣的,因此count統(tǒng)計會計算對于當前事務而言可以統(tǒng)計到的行數(shù),而不是將總行數(shù)儲存起來方便快速查詢。InnoDB會嘗試遍歷一個盡可能小的索引除非優(yōu)化器提示使用別的索引。如果二級索引不存在,InnoDB還會嘗試去遍歷其他聚簇索引。

    如果索引并沒有完全處于InnoDB維護的緩沖區(qū)(Buffer Pool)中,count操作會比較費時。可以建立一個記錄總行數(shù)的表并讓你的程序在INSERT/DELETE時更新對應的數(shù)據(jù)。和上面提到的問題一樣,如果此時存在多個事務的話這種方案也不太好用。如果得到大致的行數(shù)值已經(jīng)足夠滿足需求可以嘗試SHOW TABLE STATUS

    • 那么為什么InnoDB沒有了這個變量呢?
  5. InnoDB支持表、行(默認)級鎖,而MyISAM僅支持表級鎖

  6. InnoDB表必須有唯一索引(如主鍵)(用戶沒有指定的話會自己找/生產(chǎn)一個隱藏列Row_id來充當默認主鍵),而Myisam可以沒有主鍵

  7. Innodb存儲文件有frm、ibd,而Myisam是frm、MYD、MYI

    • Innodb:frm是表定義文件,ibd是數(shù)據(jù)文件
    • Myisam:frm是表定義文件,myd是數(shù)據(jù)文件,myi是索引文件

索引失效的場景

  1. 對索引列使用了函數(shù)、表達式或運算符:當查詢條件中使用了函數(shù)、表達式或運算符時,MySQL就無法使用該列的索引,因為它需要對每行數(shù)據(jù)進行計算,而不是直接查找索引。
  2. 查詢條件中使用了不等于操作符(<>、!=)、NOT NULL, NOT IN 等
  3. 模糊查詢:當查詢條件中使用了LIKE、%或_等模糊匹配符號時,MySQL無法使用索引進行快速定位。
  4. OR條件:當查詢條件中包含多個OR條件時,MySQL無法使用索引進行快速定位。
  5. 范圍查詢:當查詢條件中使用了BETWEEN、<、>、<=、>=等操作符時,MySQL只能使用索引中的一部分數(shù)據(jù),需要讀取更多的數(shù)據(jù)進行過濾,降低了查詢效率。
  6. 數(shù)據(jù)類型不匹配,需要隱式轉(zhuǎn)換類型
  7. 對索引列進行排序,因為它需要將數(shù)據(jù)按照指定的順序進行排序
  8. 復合索引,如果不使用前列,后續(xù)列也將無法使用

小結(jié)

正確的使用索引,能夠顯著提高數(shù)據(jù)庫的查詢效率。本文匯總了MySQL索引的常用知識點,幫助大家快速記憶

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 緩沖
    +關(guān)注

    關(guān)注

    0

    文章

    53

    瀏覽量

    17996
  • 指針
    +關(guān)注

    關(guān)注

    1

    文章

    484

    瀏覽量

    71064
  • 數(shù)據(jù)結(jié)構(gòu)

    關(guān)注

    3

    文章

    573

    瀏覽量

    40642
  • MySQL
    +關(guān)注

    關(guān)注

    1

    文章

    849

    瀏覽量

    27651
收藏 人收藏

    評論

    相關(guān)推薦
    熱點推薦

    Jackson常用知識點和易錯

    Jackson常用知識點和易錯
    發(fā)表于 06-12 17:22

    電機選型設計的常用公式與知識點

    電機選型設計的常用公式與知識點匯總
    發(fā)表于 01-27 06:46

    linux常用的命令知識點

    Linux基礎(chǔ)命令的總結(jié)linux常用的命令知識點
    發(fā)表于 02-02 06:31

    STM32外部中斷知識點概述

    STM32外部中斷概述知識點(1)知識點(2)知識點(3)中斷服務函數(shù)外部中斷常用庫函數(shù)外部中斷的一般配置步驟知識點(1)STM32的每個I
    發(fā)表于 08-16 07:43

    高一數(shù)學知識點總結(jié)

    高一數(shù)學知識點總結(jié)高一數(shù)學知識點總結(jié)高一數(shù)學知識點總結(jié)
    發(fā)表于 02-23 15:27 ?0次下載

    高二數(shù)學知識點總結(jié)

    高二數(shù)學知識點總結(jié)高二數(shù)學知識點總結(jié)高二數(shù)學知識點總結(jié)
    發(fā)表于 02-23 15:27 ?0次下載

    PWM知識點詳解

    PWM知識點
    發(fā)表于 03-16 08:00 ?44次下載

    MySQL索引的使用問題

    MySQL 在LIKE進行模糊匹配的時候又是如何利用索引的呢?3、MySQL 到底在怎么樣的情況下能夠利用索引進行排序?今天,我將會用一個模型,把這些問題都一一解答,讓你對
    的頭像 發(fā)表于 01-06 16:13 ?1781次閱讀

    MySQL的基本知識點梳理和常用操作總結(jié)

    本文主要是總結(jié)了工作中一些常用的操作,以及不合理的操作,在對慢查詢進行優(yōu)化時收集的一些有用的資料和信息,本文適合有mysql基礎(chǔ)的開發(fā)人員。 一、索引相關(guān) 1、索引基數(shù):基數(shù)是數(shù)據(jù)列所
    的頭像 發(fā)表于 02-04 13:44 ?1889次閱讀
    <b class='flag-5'>MySQL</b>的基本<b class='flag-5'>知識點</b>梳理和<b class='flag-5'>常用</b>操作總結(jié)

    嵌入式知識點總結(jié)

    嵌入式知識點總結(jié)(arm嵌入式開發(fā)led過程)-嵌入式知識點總結(jié)? ? ? ? ? ? ? ? ? ??
    發(fā)表于 07-30 14:20 ?23次下載
    嵌入式<b class='flag-5'>知識點</b>總結(jié)

    MySQL索引下推知識分享

    Mysql 是大家最常用的數(shù)據(jù)庫,下面為大家?guī)?mysql 索引下推知識點的分享,以便鞏固 mysql 基礎(chǔ)
    的頭像 發(fā)表于 12-27 09:49 ?816次閱讀

    數(shù)字電路知識點總結(jié)

    本文整理了數(shù)字電路課程中的相關(guān)基本的知識點和較為重要的知識點,用于求職的數(shù)電部分的知識準備,差缺補漏。
    的頭像 發(fā)表于 05-30 15:07 ?5590次閱讀
    數(shù)字電路<b class='flag-5'>知識點</b>總結(jié)

    MySQL高級進階:索引優(yōu)化

    MySQL官方對于索引的定義:索引是幫助MySQL高效獲取數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu)。
    的頭像 發(fā)表于 06-11 11:13 ?827次閱讀
    <b class='flag-5'>MySQL</b>高級進階:<b class='flag-5'>索引</b>優(yōu)化

    STM32 RTOS知識點

    電子發(fā)燒友網(wǎng)站提供《STM32 RTOS知識點.pdf》資料免費下載
    發(fā)表于 08-01 14:28 ?4次下載
    STM32 RTOS<b class='flag-5'>知識點</b>

    MySQL知識點匯總

    大家好,這部分被稱為DQL部分,是每個學習MySQL必須要學會的部分,下面就讓我來介紹MySQL中的其他部分。
    的頭像 發(fā)表于 08-05 15:27 ?622次閱讀
    <b class='flag-5'>MySQL</b><b class='flag-5'>知識點</b>匯總
    主站蜘蛛池模板: 天天舔天天干 | 午夜精品视频在线观看 | 亚洲一区二区免费 | 自拍偷拍福利 | 啪啪午夜视频 | 国产一级特黄aa大片爽爽 | 国产高清精品自在久久 | caopon在线| 色视视频 | 夜夜精品视频 | 国产午夜精品久久久久免费视 | 天天爽夜爽免费精品视频 | 亚洲色图综合图区 | 久操福利| 无毒三级 | 天天做天天爱天天一爽一毛片 | 日本19xxxxxxxxx69 日本68xxxxxxxxx59 | 奇米狠狠干 | 视频在线观看一区 | 在线www天堂资源网 在线播放 你懂的 | 国产精品免费久久久免费 | 国产精品久久久久久久人热 | 亚洲国产午夜精品理论片的软件 | 日本三级s级在线播放 | 久久在线播放 | 亚洲午夜精品久久久久久成年 | 丁香综合在线 | 色宅男看片午夜大片免费看 | 狠狠色丁香婷婷综合最新地址 | 521色香蕉网在线观看免费 | 最刺激黄a大片免费观看下截 | 色网址在线| 手机看片自拍自自拍日韩免费 | 网站在线观看视频 | 国产精品久久久久久久久免费 | 被男同桌摸内裤好爽视频 | 美女扒开内裤无遮挡禁18 | 狂野欧美性猛交xxxx免费 | 黄网免费 | 色视频在线免费看 | 久久99热狠狠色精品一区 |