【Mysql篇】索引底层知识

索引:个人的理就是,索引是一种加快查询数据的数据结构。

索引种类

  1. 主键索引」(PRIMARY KEY):一般在创建表的时候指定,「一个表只有一个主键索引」,特点是「唯一、非空」
  2. 「唯一索引」(UNIQUE):特点是唯一性,可以在创建表的时候指定,也可以在创建表后创建。
  3. 「普通索引」(INDEX):唯一的作用就是加快查询
  4. 「组合索引」( INDEX):创建一个「多个字段的索引」,这个概念是相对于上上面的单列索引而言,组合索引遵循「最左前缀原则」
  5. 「全文索引」(FULLTEXT):针对大的「文本字段」创建的索引,也称为「全文检索」。
  6. 「聚簇索引」「非聚簇索引」:聚簇索引和非聚簇索引的概念比上面的概念要大,属于包含和被包含的关系。Mysql主键索引使用的就是聚簇索引。
查看一个表的所有索引,可以执行"show index from 表名"来查看: Key_name表示索引的名字,Column_name表示索引的字段。

主键索引

  • 主键索引在InnoDB存储引擎中是最常见的索引类型,一个表都会有一个主键索引,它索引的字段不允许为空值,并且唯一

  • 在创建表的时候,可以通过RIMARY KEY指定主键索引,在InnoDB存储引擎中,若是创建表的时候没有主观创建主键索引,Mysql就会看表中是否有唯一索引,就会指定「非空的唯一索引」为主键索引;没有,就会默认生成一个6byte空间的自动增长主键作为主键索引,可以通过select _rowid from 表名查询的是对应的主键值.。

  • MyISAM储存引擎是可以不存在主键索引,MyISAM和InnoDB储存数据的结构方式有明显的区别

唯一索引

  • 唯一索引与主键索引的区别就是,唯一索引允许为空,若是在组合索引中,只要创建的列值是唯一的

  • 唯一索引在实际中更多的是用来保证数据的唯一性,如仅仅要数据能够快速查询,可以使用普通索引

  • 创建唯一索引的方式有三种。
    (1)在创建表的时候指定:

CREATE TABLE user( 
 id INT PRIMARY KEY NOT NULL, 
 name VARCHAR(16) NOT NULL, 
 UNIQUE unique_name (name(10)) 
)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MySQL的全文索引底层原理是基于倒排索引的。在MySQL中,全文索引只支持英文,如果需要对中文进行全文检索,可以使用sphinx的中文版(coreseek)。 底层原理包括MySQL缓冲池、索引底层原理、页分裂与页合并、B树的优势以及索引操作等。 MySQL缓冲池是用于管理数据页的,包括数据页与数据页管理、free链表、flush链表、哈希表以及LRU链表。 索引底层原理分为InnoDB索引和MyISAM索引。InnoDB索引包括行记录与页内索引、页外索引页、B树结构、聚簇索引以及InnoDB索引文件。而MyISAM索引包括聚簇索引VS非聚簇索引以及MyISAM索引文件。 页分裂与页合并是指当索引的数据页满了之后,需要进行分裂操作,将数据分散到新的数据页中,或者当数据删除时,页空间过多时需要进行合并操作,将数据整理到更少的页中。 B树是一种常用的索引数据结构,相比于其他数据结构如AVL树、红黑树、哈希表和跳表,B树具有较好的平衡性和高效的插入、删除和查找性能,因此被广泛应用于索引中。 索引操作包括创建索引、删除索引、查看索引、全文索引和复合索引最左匹配原则等。创建索引默认主键,删除索引是指删除已经创建的索引,查看索引可以使用EXPLAIN语句来查看索引的使用情况。全文索引用于对文本内容进行全文检索,而复合索引最左匹配原则是指在复合索引中,只有最左边的列被使用时索引才会生效。 综上所述,MySQL的全文索引底层原理是基于倒排索引的,具体包括MySQL缓冲池、索引底层原理、页分裂与页合并、B树的优势以及索引操作等方面的内容。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [MYSQL索引底层原理](https://blog.csdn.net/winy1986/article/details/125758304)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [详解MySQL索引底层原理](https://blog.csdn.net/Wyf_Fj/article/details/126415270)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值