数据库索引
2023-12-29 08:57:11
1、介绍
1.1定义
索引是MySQL中能够高效获取数据的一种数据结构,类似于字典中的目录
1.2为啥要引入索引
索引的目的总的来说就是为了提高数据检索效率,如果没有索引就需要进行全表扫描
具体来说索引有以下优缺点:
优点:
- 提高数据检索效率
- 通过索引列对数据进行排序,降低数据排序的成本,降低CPU的消耗
缺点:
- 说到底索引也是一张表,所以索引也是要占用一定的空间的
- 虽然提高了检索效率,但是也降低了更新表的速度,更新表时不仅要更新原表的数据,还要更新索引文件的数据
- 索引是需要根据具体场景的变化不断变化的,当数据库数据较多时需要花费大量时间建立优秀的索引
2.MySQL索引的具体分类
索引大致分为以下5类:
- 普通索引key
- 唯一索引unique key
- 主键索引primary key
- 组合索引 index(name,age,gender)
- 全文索引
5种索引5种索引关键字
CREATE TABLE customer (id INT(10) UNSIGNED AUTO_INCREMENT ,customer_no VARCHAR(200),customer_name VARCHAR(200),
PRIMARY KEY(id),
KEY (customer_name),
UNIQUE (customer_no),
KEY (customer_s1,customer_s2)
);
这里的id就是主键索引,customer_name就是普通索引,customer_name就是唯一索引,customer_s1,customer_s2就是组合索引
注意:在任何数据库当中,主键上都会自动添加索引对象。另外在MySQL中,一个字段上如果有unique约束的话,也会自动创建按索引对象。
create table fulltext_test (
id int(11) NOT NULL AUTO_INCREMENT,
content text NOT NULL,
tag varchar(255),
PRIMARY KEY (id),
FULLTEXT KEY content_tag_fulltext(content,tag) // 创建联合全文索引列
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
全文索引由FULL TEXT定义的索引,只能创建在char、TEXT或者varchar字段上,现在只有MyISAM存储引擎支持全文索引
3.MySQL的索引实现原理(B+树与B树的区别)
MySQL 中的索引是通过 B+ 树实现的。B+树是?种多路搜索树,是对B树的?种改进。
B树和B+树的主要区别在于 :
- B+树内节点不存储数据,所有数据存储在叶节点导致查询时间复杂度固定为log n,而B树查询时间复杂度不固定,与Key在树中的位置有关。
- B+树叶节点都连接成 了?个有序的链表,因此可以很?便地进?范围查询等操作
- B+树更适合外部存储(存储磁盘数据)。由于内节点无data域,每个节点能索引的范围更大更精确
- B+树的索引结构相对简单,易于实现和维护,能够满??并发、?可?的数据库要求
文章来源:https://blog.csdn.net/Mr_liu888/article/details/135277876
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!