Mysql 索引概念回顧

一、什么是索引

????????在關系數據庫中,索引是一種單獨的、物理的對數據庫表中一列或多列的值進行排序的一種存儲結構,它是某個表中一列或若干列值的集合和相應的指向表中物理標識這些值的數據頁的邏輯指針清單。索引的作用相當于圖書的目錄,可以根據目錄中的頁碼快速找到所需的內容。
????????能實現快速定位數據的一種存儲結構,其設計思想是以空間換時間

二、索引的分類

按 [ 數據結構 ] 分類:B+tree索引、Hash索引、Full-text索引。

按 [ 物理存儲 ] 分類:索引 (主鍵索引) 、二級索引(輔助索引)。

按 [ 字段特性 ] 分類:主鍵索引、唯一索引、普通索引、前綴索引。

按 [ 字段個數 ] 分類:單列索引、聯合索引。??

三、MySQL如何實現的索引機制

在MySQL 中有不同的存儲引擎比如像 InnoDB MyISAM Memory 等等每一種存儲引擎在其內部實現索引機制的原理也有所不同。

在 MySQL5.5 之后默認的就是 InnoDB,并且是目前使用最廣泛的MySQL數據引擎,以 InnoDB為例。

1. 如果說在表中有100條數據,而要找出所需要的數據,有哪些辦法?
  • (不推薦)按照一種順序的方式一條一條往下去搜索,直到匹配到需要的數據,這是一種方案在時間復雜度上是0(N),雖說效率差但也能用。
  • (不推薦)二分查找法也是一種常用的比較高效的查詢算法,它的搜索效率為 0(log(N)),雖說查找效率是比順序查找高了不少,但是它有兩個前提條件,必須用順序存儲結構比如數組,第二個是必須按照關鍵字進行有序排序(從小到大)。
  • (不推薦)哈希查找,哈希查找的特性是能夠做到直接定址,其效率無限接近于 0(1),取決于沖突的數量。但是散列表數據是無序存儲的,排序要自己做,第二個是散列表還要擴容耗時長,遇到散列沖突性能不穩定。
  • (推薦)B樹/B+樹查找的復雜度是 0(log2(N)),那么這也是InnoDB 采用的數據結構,在查找效率上的非常高的。
?B+Tree

平衡二叉樹

B+ tree

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

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

相關文章

《算法競賽進階指南》------圖論篇

文章目錄 0x01 Telephone Lines POJ - 36620x02 P1073 [NOIP2009 提高組] 最優貿易0x03 道路和航線 BZOJ22000x04 Sorting It All Out POJ - 1094 topo0x05 Sightseeing trip POJ - 1734 最小環問題0x06 Cow Relays POJ - 3613 S到E經過k條邊的最短路0x07 走廊潑水節 &#xff…

為什么Java程序員需要掌握多線程?揭秘并發編程的奧秘

為什么Java程序員需要掌握多線程?揭秘并發編程的奧秘 個人簡介前言多線程對于Java的意義📌1.提高程序性能:📌2 提高用戶體驗:📌3支持并發處理:📌4 資源共享和同步:&#…

OpenSSL 編程示例

參考:深入探索 OpenSSL:概念、原理、開發步驟、使用方法、使用場景及代碼示例 地址:https://oneisall.blog.csdn.net/article/details/131489812?spm1001.2014.3001.5502 目錄 1. OpenSSL 概念2. OpenSSL 原理3. OpenSSL 開發步驟4. OpenSSL…

C# 語法筆記

1.ref、out:參數傳遞的兩種方式 ref:引用傳遞 using System; namespace CalculatorApplication {class NumberManipulator{public void swap(ref int x, ref int y){int temp;temp x; /* 保存 x 的值 */x y; /* 把 y 賦值給 x */y temp; /* 把 t…

Python中的range()函數詳解:掌握迭代的利器

更多資料獲取 📚 個人網站:ipengtao.com Python中的range()函數是一個強大的工具,用于生成一系列的數字,常用于循環操作。雖然看似簡單,但其靈活性和功能卻不容小覷。在本文中,將深入研究range()函數&…

9. 從零用Rust編寫正反向代理, HTTP2改造篇之HPACK示例, 了解http2頭信息如何處理

wmproxy wmproxy是由Rust編寫,已實現http/https代理,socks5代理, 反向代理,靜態文件服務器,內網穿透,配置熱更新等, 后續將實現websocket代理等,同時會將實現過程分享出來&#xff…

vue3,元素可拖拽,自定義指令,鼠標以及手指事件的寫法不一樣

使用很簡單&#xff0c;直接 <div v-drag><div class"header"></div><div class"content"></div> </div>// 自定義指令 —— 拖動div const vDrag {// 在綁定元素的父組件// 及他自己的所有子節點都掛載完成后調用m…

docker容器_自定義上傳jenkins鏡像(Dockerfile實現)

1.創建jenkins目錄&#xff0c;并上傳相應的包 mkdir /jenkins/ 2.創建一個Dockerfile文件 FROM daocloud.io/library/centos:7#把當前目錄下的jenkins.war包傳到內部容器的/ 下 ADD ./jenkins.war /#把當前目錄下的jdk傳到內部容器的/opt/,并解壓 ADD ./jdk-11.0.19_linu…

程序解釋與編譯

?1.程序的解釋執行方式 程序語言強寫的計策機指令序列稱為“源程序”,計算機并不能直接執行用高級語言編寫的源程序&#xff0c;源程序必須通過“翻譯程序”翻譯成機器指令的形式&#xff0c;計算機才能項別和執行。源程序的翻譯有兩種方式&#xff1a;解釋執行和編譯執行。不…

網絡編程基礎api

1. IP 協議 1.1 IP 分片 &#xff08;1&#xff09;IP 分片和重組主要依靠 IP 頭部三個字段&#xff1a;數據報標識、標志和片偏移 以太網幀的 MTU 是 1500 字節&#xff1b; 一個每個分片都有自己的 IP 頭部&#xff0c;它們都具有相同的標識值&#xff0c;有不同的片偏移…

css 十字分割線(含四等分布局)

核心技術 偽類選擇器含義li:nth-child(2)第2個 lili:nth-child(n)所有的lili:nth-child(2n)所有的第偶數個 lili:nth-child(2n1)所有的第奇數個 lili:nth-child(-n5)前5個 lili:nth-last-child(-n5)最后5個 lili:nth-child(7n)選中7的倍數 border-right: 3px solid white;borde…

EasyExcel-最簡單的讀寫excel工具類

前言&#xff1a; easyExcel 的官網文檔給的示例非常全&#xff0c;可以參考https://easyexcel.opensource.alibaba.com/docs/current/quickstart/read 在此我貼出自己的工具類&#xff0c;可以直接用 導包 <dependency><groupId>com.alibaba</groupId><…

機器學習第15天:GBDT模型

??主頁 Nowl &#x1f525;專欄《機器學習實戰》 《機器學習》 &#x1f4d1;君子坐而論道&#xff0c;少年起而行之 ?? 文章目錄 GBDT模型介紹 Boosting 殘差 GBDT的缺點 python代碼實現 代碼 模型參數解釋 結語 GBDT模型介紹 GBDT&#xff08;Gradient Boos…

vivado $clog2函數

對于.v文件在vivado中是不支持&#xff0c;但是可以修改為.sv或更改文件屬性使用sytemverilog來支持。 /*** Math function: $clog2 as specified in Verilog-2005** clog2 0 for value 0* ceil(log2(value)) for value > 1** This implementatio…

php+mysql期末作業小項目

目錄 1、登錄界面 2、注冊界面 3、主界面 4、學生表界面 5 、查詢學生界面?編輯 6、修改學生信息界面?編輯 7、刪除學生信息界面 8、添加學生信息界面 9、后臺數據庫?編輯 一個簡單的php?mysql項目學生信息管理系統&#xff0c;用于廣大學子完成期末作業的參考&…

測試架構工程師需要具備哪些能力 ?

前言 相比于我們常見的研發架構師&#xff0c;測試架構師是近幾年才出現的一個崗位&#xff0c;當然崗位title其實沒有特殊的含義&#xff0c;在我看來測試架構師其實更像對某一類人的抽象稱呼和對其復合能力的期待及認可。 在聊這篇文章的主題之前&#xff0c;先來看這樣一個…

算法訓練營Day4(鏈表)

語言 采用的Java語言&#xff0c;一些分析也是用于Java&#xff0c;請注意。 24. 兩兩交換鏈表中的節點 24. 兩兩交換鏈表中的節點 - 力扣&#xff08;LeetCode&#xff09; 解題 這道題就是考驗鏈表的基礎操作&#xff0c;但是有個語言方面的知識需要去掌握&#xff0c;就是|…

TCP通信

第二十一章 網絡通信 本章節主要講解的是TCP和UDP兩種通信方式它們都有著自己的優點和缺點 這兩種通訊方式不通的地方就是TCP是一對一通信 UDP是一對多的通信方式 接下來會一一講解 TCP通信 TCP通信方式呢 主要的通訊方式是一對一的通訊方式&#xff0c;也有著優點和缺點…

如何在Android平板上遠程連接Ubuntu服務器使用code-server代碼開發

目錄 1.ubuntu本地安裝code-server 2. 安裝cpolar內網穿透 3. 創建隧道映射本地端口 4. 安卓平板測試訪問 5.固定域名公網地址 6.結語 1.ubuntu本地安裝code-server 準備一臺虛擬機,Ubuntu或者centos都可以&#xff0c;這里以VMwhere ubuntu系統為例 下載code server服務…

el-table 表格多選(后端接口搜索分頁)實現已選中的記憶功能。實現表格數據和已選數據(前端分頁)動態同步更新。

實現效果&#xff1a;&#xff08;可拉代碼下來看&#xff1a;vue-demo: vueDemo&#xff09; 左側表格為點擊查詢調用接口查詢出來的數據&#xff0c;右側表格為左側表格所有選擇的數據&#xff0c;由前端實現分頁。 兩個el-table勾選數據聯動更新 實現邏輯&#xff1a; el-…