數據庫-索引(高級篇)

在這里插入圖片描述

文章目錄

    • 索引概念?
    • 索引演示?
    • 索引的優劣?
    • 為什么使用索引就快?
    • 本篇小結

更多相關內容可查看

索引概念?

索引(index)是幫助MySQL高效獲取數據的數據結構(有序)。在數據之外,數據庫系統還維護著滿足特定查找算法的數據結構,這些數據結構以某種方式引用(指向)數據, 這樣就可以在這些數據結構上實現高級查找算法,這種數據結構就是索引。
在這里插入圖片描述
一提到數據結構,大家都會有所擔心,擔心自己不能理解。不過在這里大家完全不用擔心,下文會詳細介紹。

索引演示?

表結構及其數據如下:
在這里插入圖片描述

假如我們要執行的SQL語句為 : select * from user where age = 45
無索引情況
blog.csdnimg.cn/direct/98d8d92c3c464e309fce0ff928f9e5e5.png)

在無索引情況下,就需要從第一行開始掃描,一直掃描到最后一行,我們稱之為 全表掃描,性能很低。

有索引情況
如果我們針對于這張表建立了索引,假設索引結構就是二叉樹,那么也就意味著,會對age這個字段建立一個二叉樹的索引結構。
在這里插入圖片描述

此時我們在進行查詢時,只需要掃描三次就可以找到數據了,極大的提高的查詢的效率。

索引的優劣?

優勢

  1. 提高數據檢索的效率,降低數據庫的IO成本
  2. 通過索引列對數據進行排序,降低數據排序的成本,降低CPU的消耗

劣勢

索引列也是要占用空間的 索引大大提高了查詢效率,同時卻也降低更新表的速度,如對表進行INSERT、UPDATE、DELETE時,效率降低

為什么使用索引就快?

  1. 減少數據掃描: 索引是一種數據結構,能夠快速定位到數據中符合特定條件的記錄。通過使用索引,數據庫引擎可以直接跳過大部分數據,只掃描索引中符合查詢條件的記錄,從而大大減少了數據掃描的量,提高了查詢速度。
  2. 減少磁盤 I/O索引通常存儲在內存中,因此可以減少對磁盤的訪問次數。當數據庫引擎需要從磁盤讀取數據時,如果使用了索引,它可以首先定位到索引中的位置,然后再讀取相應的數據塊,從而減少了磁盤I/O 操作的次數,提高了查詢效率。
  3. 提高數據檢索效率 索引能夠將數據按照特定的排序方式組織起來,從而加快數據的檢索速度。例如,對于 B 樹索引,數據庫引擎可以利用其平衡樹結構進行快速的二分查找,從而快速定位到符合條件的記錄。
  4. 避免全表掃描: 在沒有索引的情況下,數據庫引擎可能需要對整個表進行掃描來找到符合查詢條件的記錄,這會消耗大量的時間和資源。而使用索引可以避免全表掃描,使查詢變得更加高效。
  5. 優化排序和連接操作: 索引不僅可以加速數據的查找,還可以優化排序和連接操作。例如,如果查詢需要對結果進行排序或者執行連接操作,索引可以提供已排序的數據或者幫助優化連接順序,從而加速查詢的執行。

本篇小結

本篇提供索引描述內容,可以快速理解什么是索引及其所體現的功能

其他索引的相關問題鏈接如下
索引結構(B-Tree,B+Tree,Hash,二叉樹)
索引分類(主鍵索引、唯一索引、普通索引、全文索引)
索引語法

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/13163.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/13163.shtml
英文地址,請注明出處:http://en.pswp.cn/web/13163.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

生成完美口型同步的 AI 數字人視頻

目錄 摘要 關鍵詞 1 前言 1.1 研究背景 1.2 研究意義 2 技術框架 2.1 深度學習框架 2.2 語音識別 2.3 面部動作捕捉和口型同步 2.4 綜合項目 3 實現過程 3.1 環境搭建 3.2 代碼開發 3.3 整合代碼 3.4 部署 3.5 更多細節 4 測試過程 4.1 數據準備 4.2 面部檢測…

語法分析-文法

如果對于一部文法中,存在至少一個句子有兩個或者兩個以上的語法樹則該文法是二義性的。 我們可以以上面的例子進行解釋,對于第棵個語法樹,我們可以看到是先進行了加法運算再進行的乘法運算,因為需要先把EE作為整體運算完后再成為E…

上海亞商投顧:滬指低開低走 兩市成交額跌破8000億

上海亞商投顧前言:無懼大盤漲跌,解密龍虎榜資金,跟蹤一線游資和機構資金動向,識別短期熱點和強勢個股。 一.市場情緒 市場全天震蕩走低,三大股指尾盤均跌近1%。地產股逆勢走強,光大嘉寶、天地源、云南城投…

幻獸帕魯Palworld服務器手動+docker部署方法+備份遷移

目錄 帕魯部署官方文檔帕魯手動安裝法手動安裝steamcmd通過steamcmd安裝帕魯后端 docker容器一鍵部署幻獸帕魯綠聯云NAS機器部署幻獸帕魯客戶端連接附錄1:PalServer.sh的啟動項附錄2:配置文件游戲存檔保存和遷移 關于阿里云計算巢 帕魯部署官方文檔 htt…

學習MySQL(五):窗口函數

窗口函數介紹 窗口函數的引入是為了解決想要既顯示聚集前的數據,又要顯示聚集后的數據;窗口數對一組值進行操作,不需要使用GROUP BY子句對數據進行分組,能夠在同一行中同時返回基礎行的列和聚合列。 強調:使用MySQL …

?學者觀察 | 從區塊鏈應用創新看長安鏈發展——CCF區塊鏈專委會榮譽主任斯雪明

導語 2024年1月27日,斯雪明教授在長安鏈發布三周年慶暨生態年會上發表演講,認為在區塊鏈發展過程中,不僅需要技術創新,同時需要有價值、有特色、有示范意義的應用創新。斯雪明教授介紹了國內區塊鏈技術與應用發展的現狀、趨勢與挑…

【數據結構】排序(直接插入排序,希爾排序)

目錄 一、排序的概念 二、常見的排序算法 三、插入排序 1.直接插入排序 1.直接插入排序實現 2.直接插入排序特性及復雜度 2.希爾排序 1.排序思路 2.希爾排序實現 3.希爾排序的特性及復雜度 一、排序的概念 排序:所謂排序,就是使一串記錄&#x…

python手寫數字識別(PaddlePaddle框架、MNIST數據集)

python手寫數字識別(PaddlePaddle框架、MNIST數據集) import paddle import paddle.nn.functional as F from paddle.vision.transforms import Compose, Normalizetransform Compose([Normalize(mean[127.5],std[127.5],data_formatCHW)]) # 使用tran…

[Java基礎揉碎]多線程基礎

多線程基礎 什么是程序, 進程 什么是線程 什么是單線程,多線程 并發, 并行的概念 單核cpu來回切換, 造成貌似同時執行多個任務, 就是并發; 在我們的電腦中可能同時存在并發和并行; 怎么查看自己電腦的cpu有幾核 1.資源監視器查看 2.此電腦圖標右鍵管理- 設備管理器- 處理器…

k8s 二進制安裝 詳細安裝步驟

目錄 一 實驗環境 二 操作系統初始化配置(所有機器) 1,關閉防火墻 2,關閉selinux 3,關閉swap 4, 根據規劃設置主機名 5, 做域名映射 6,調整內核參數 7, 時間同步 三 部署 dock…

uniapp vu3 scroll-view 滾動到指定位置

設置 scroll-view <scroll-view :scroll-y"true" :scroll-with-animation"true" :scroll-top"scrollTop" :style"height:${height}px"><view v-for"item in 10" :id"box${item}">box {{item}}</v…

原生IP介紹

原生IP&#xff0c;顧名思義&#xff0c;即初始真實IP地址&#xff0c;是指從互聯網服務提供商獲得的IP地址&#xff0c;IP地址在互聯網與用戶之間直接建立聯系&#xff0c;不需要經過代理服務器代理轉發。 原生IP具備以下特點。 1.直接性 原生IP可以直接連接互聯網&#xff…

337_C++_內存對齊操作,內存分配、或其他需要數據對齊的場合中是很常見的操作

size_t ImagesCache::_alignSize(size_t srcSz, size_t alnSz) {if (0 == alnSz) {printf("[ImagesCache] Incorrect input parameters\n");return srcSz;

代碼隨想錄算法訓練營第五十四天

第二題我看了很久還是沒太明白&#xff0c;我發現理解動規有一點點吃力了啊&#xff0c;努努力。 392.判斷子序列 總感覺在不等于的時候&#xff0c;應該是dp[i][j] dp[i-1][j-2]; 這里其實按他那個圖會更好理解一點。 class Solution { public:bool isSubsequence(string s, …

Gone框架介紹19 -如何進行單元測試?

gone是可以高效開發Web服務的Golang依賴注入框架 github地址&#xff1a;https://github.com/gone-io/gone 文檔地址&#xff1a;https://goner.fun/zh/ 請幫忙在github上點個 ??吧&#xff0c;這對我很重要 &#xff1b;萬分感謝&#xff01;&#xff01; 文章目錄 單元測試…

CentOs安裝

安裝 開發工具 &#xff1a;GCC、 JDK、mysql 如果出現藍屏&#xff0c;要在BIOS開啟虛擬化支持&#xff0c;或者移除打印機。

Google:站長移除無效網址

當您的網址不需要呈現在Google站長中時&#xff0c;您可以在站長工具中移除網址 操作步驟&#xff1a;登錄Google站長&#xff0c;綁定網站完成后&#xff0c;點擊左側刪除 >> 輸入網址 如果遇到一些網址&#xff0c;可以找尋網址間的規律&#xff0c;比如說&#xff0…

2024生日快樂祝福HTML源碼

源碼介紹 2024生日快樂祝福HTML源碼&#xff0c;源碼由HTMLCSSJS組成&#xff0c;記事本打開源碼文件可以進行內容文字之類的修改&#xff0c;雙擊html文件可以本地運行效果&#xff0c;也可以上傳到服務器里面&#xff0c; 源碼截圖 源碼下載 2024生日快樂祝福HTML源碼

Shell腳本 <<EOF ... EOF語法(Here Document)(特殊的輸入重定向方式)(定界符)

文章目錄 Here Document語法Here Document 的基本語法使用場景 關于定界符定界符不是變量定界符在 Here Document 中只是一個字符串&#xff0c;主要功能是標記輸入文本的開始和結束&#xff0c;使用時應遵循最佳實踐格式要求例子和說明如何使用定界符定界符可重復使用&#xf…

Spring數據訪問全攻略:從JdbcTemplate到聲明式事務

上文講到 —— 航向數據之海&#xff1a;Spring的JPA與Hibernate秘籍 本文目錄 四. JdbcTemplate的使用定義JdbcTemplate及其在Spring中的作用展示如何使用JdbcTemplate簡化數據庫操作1. 配置JdbcTemplate2. 使用JdbcTemplate查詢數據3. 打印查詢結果 五. Spring的事務管理介紹…