返回顶部
首页 > 资讯 > 数据库 >MySQL高级篇——索引简介
  • 716
分享到

MySQL高级篇——索引简介

mysql数据库java 2023-08-16 18:08:32 716人浏览 独家记忆
摘要

🙌作者简介:数学与计算机科学学院学生、分享学习经验、生活、 努力成为像代码一样有逻辑的人 🌙个人主页:阿芒的主页 文章目录 👩‍🔧索引是什么👩‍&

🙌作者简介:数学与计算机科学学院学生、分享学习经验、生活、 努力成为像代码一样有逻辑的人
🌙个人主页:阿芒的主页

👩‍🔧索引是什么

Mysql官方对索引定义: 索引(Index)是帮助mysql高效获取数据的数据结构
索引的本质: 索引是数据结构。
索引的目的: 提高查询效率,可以类比字典。

注:可以将索引简单的理解为 “排好序的快速查找数据结构”。一般来说索引本身也很大,不可能全部存储在内存中,因此索引往往以索引文件的形式存储的磁盘上
我们平常所说的索引,如果没有特别指明,都是指B树(多路搜索树,并不一定是二叉的)结构组织的索引。其中聚集索引,复合索引,前缀索引,唯一索引默认都是使用B+树索引,统称索引。


👩‍🔧索引的优势和劣势

👉优势

①类似大学图书馆建书目索引,提高数据检索的效率,降低数据库io成本

② 通过索引列对数据进行排序,降低数据排序的成本,降低了CPU的消耗

👉劣势

① 索引实际上是一张表,该表保存了主键与索引字段,并指向实体表的记录,所以索引列也会占用空间

②虽然索引大大提高查询速度,同时却会降低更新表的速度,如对表进行INSERT、UPDATE和DELETE。因为更新表时,Mysql不仅要保存数据,还要保存一下索引文件每次更新添加了索引列的字段,都会调整因为更新所带来的键值变化后的索引信息

③索引只是提高效率的一个因素,如果你的MySQL有大数据量的表,就需要花时间研究建立最优秀的索引,或优化查询


👩‍🔧MySQL索引分类

👉 单值索引

定义: 一个索引只包含单个列,一个表可以有多个单列索引

注:一般一张表最多而言不要超过5个索引

👉 唯一索引

定义: 索引列的值必须唯一,但允许有空值

👉 复合索引

定义: 一个索引包含多个列

👉 基本语法

  • 创建
CREATE [UNIQUE] INDEX indexName ON mytable(columnnname(length));ALTER mytable ADD [UNIQUE] INDEX [indexName] ON (columnname(length))
  • 删除
 DROP INDEX [indexName] ON mytable;
  • 查看
SHOW INDEX FROM table_name\G
  • 使用ALTER命令

有四种方式添加数据表的索引:

①ALTER TABLE tbl_name ADD PRIMARY KEY (column_list):该语句添加一个主键,这意味着索引值必须是唯一的,且不能为NULL。

②ALTER TABLE tbl_name ADD UNIQUE index_name(column_list):这条语句创建索引的值必须是唯一的(除了NULL外,NULL可能会出现多次)。

③ALTER TABLE tbl_name ADD INDEX index_name(column_list):添加普通索引,索引值可出现多次。

④ALTER TABLE tbl_name ADD FULLTEXT index_name(column_list):该语句指定了索引为FULLTEXT,用于全文索引。

注:[PRIMARY | UNIQUE | FULLTEXT]: 索引的类型,分别表示唯一索引,全文索引。创建数据表时,索引类型可以省略。
[INDEX | KEY]: 表示指定在数据表中创建索引。


👩‍🔧MySQL索引结构

  • BTree索引
  • Hash索引
  • full_text全文索引
  • R-Tree索引

👩‍🔧索引的创建

👉哪些情况需要创建索引

  • 主键自动建立唯一索引
  • 频繁作为查询条件的字段应该创建索引
  • 查询中与其它表关联的字段,外键关系建立索引
  • 频繁更新的字段不适合创建索引,因为每次更新不单单是更新记录还会更新索引
  • Where条件里用不到的字段不创建索引
  • 单键/组合索引的选择问题(在高并发下倾向创建组合索引)
  • 查询中排序的字段,排序字段若通过索引去访问将大大提高排序速度
  • 查询中统计或者分组字段

👉哪些情况不适合创建索引

  • 表记录太少
  • 经常增删改的表
  • 数据重复且分布平均的表字段,因此应该只为最经常查询和最经常排序的数据列建立索引。
    注意,如果某个数据列包含许多重复的内容,为它建立索引就没有太大的实际效果

来源地址:https://blog.csdn.net/qq_43499848/article/details/127447991

您可能感兴趣的文档:

--结束END--

本文标题: MySQL高级篇——索引简介

本文链接: https://lsjlt.com/news/371865.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • MySQL高级篇——索引简介
    🙌作者简介:数学与计算机科学学院学生、分享学习经验、生活、 努力成为像代码一样有逻辑的人 🌙个人主页:阿芒的主页 文章目录 👩‍🔧索引是什么👩‍&...
    99+
    2023-08-16
    mysql 数据库 java
  • MySQL高级篇之索引的数据结构详解
    目录1.为什么使用索引?2.索引的优缺点3.InnoDB中的索引3.1 设计索引3.2 常见索引概念3.2.1 聚簇索引3.2.2 非聚簇索引3.2.3 联合索引4.InnoDB与M...
    99+
    2024-04-02
  • MySQL索引篇
    目录 MySQL索引一、怎么知道一条SQL语句有没有使用索引?二、如何排查慢查询三、索引失效以及为什么失效四、索引为什么能提高查询性能五、为何选择B+树而不是B树六、索引分类七、什么时候创建以及什么时候不需要索引八、索引优化 ...
    99+
    2023-08-19
    mysql 数据库 mybatis
  • 《MySQL高级篇》六、索引的创建与设计原则
    文章目录 1. 索引的声明与使用1.1 索引的分类1.2 创建索引1、创建表的时候创建索引2、在已经存在的表上创建索引 1.3 删除索引 2. MySQL 8.0 索引新特性2.1 ...
    99+
    2023-09-01
    MySQL
  • MySQL数据库高级(六)——索引
    MySQL数据库高级(六)——索引 一、索引简介 1、索引简介 索引(Index)是帮助MySQL高效获取数据的数据结构。在MySQL中,索引属于存储引擎级别的概念,不同存储引擎对索引的实现方式是不同的。M...
    99+
    2024-04-02
  • MYSQL事务篇(高级篇)
     1.事务介绍: 一般是指要做的或所做的事情。 在计算机 术语 中是指访问并可能更新数据库中各种 数据项 的一个程序 执行单元 (unit) 2.数据库事务具有ACID四大特性。 ACID是以下4个词的缩写: 原子性(atomici...
    99+
    2015-04-25
    MYSQL事务篇(高级篇)
  • MySQL--------入门简介篇
    1. 背景   * MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在...
    99+
    2024-04-02
  • MySQL高级篇(SQL优化、索引优化、锁机制、主从复制)
    目录 0 存储引擎介绍1 SQL性能分析2 常见通用的JOIN查询SQL执行加载顺序七种JOIN写法 3 索引介绍3.1 索引是什么3.2 索引优劣势3.3 索引分类和建索引命令语句3.4 索引结构与检索原理3.5 哪些情况适合...
    99+
    2023-08-16
    mysql sql 数据库 etl 数据库开发
  • MySQL面试题-索引篇
    目录 1.什么是索引 2.索引常见的数据结构? 3.MySQL有哪些索引? 4.什么是B+树?为什么B+树成为主要的SQL数据库的索引实现? 5.聚簇索引和非聚簇索引? 6.什么是页分裂 7.Mysql为何建议使用自增id作主键  8.什...
    99+
    2023-09-02
    mysql 数据库 java 面试
  • Mysql之索引介绍
    定义:索引用于快速找出某个列中有一特定值的行。不使用索引,MySql必须从第一条记录开始读完整个表,直到找出相关的行。表越大,查询数据所花费的时间越多。如果表中查询的列有一个索引,Mysql能快速到达一个位...
    99+
    2024-04-02
  • MySQL 聚集索引和二级索引
    Clustered and Secondary Indexes(聚集索引和二级索引) Every InnoDB table has a special index called the clustered index wher&#...
    99+
    2022-03-11
    MySQL 聚集索引和二级索引
  • 《MySQL高级篇》十三、锁
    文章目录 1. 概述2. MySQL并发事务访问相同记录2.1 读-读情况2.2 写-写情况2.3 读-写或写-读情况2.4 并发问题的解决方案 3. 锁的不同角度分类3.1从数据操作的...
    99+
    2023-09-01
    mysql
  • 【MySQL新手入门系列五】:MySQL的高级特性简介及MySQL的安全简介
    前面我们已经大致讲了一下mysql的安装等介绍,MySQL 中的“新增、删除与修改”操作。 MySQL 作为一款业界领先的数据库管理系统,具备许多高级特性,本文将重点介绍MySQL中的索引、视图、存储过程、触发器和事务处理。 【MySQL新...
    99+
    2023-08-17
    mysql 安全 数据库
  • mysql索引篇explain命令详解
    目录前言keytypeExtra前言 mysql中的explain命令可以用来查看sql语句是否使用了索引,用了什么索引,有没有做全表扫描。可以帮助我们优化查询语句。explain出来的信息有10列,文章主要介绍type...
    99+
    2024-04-02
  • Mysql InnoDB聚簇索引二级索引联合索引特点
    目录一、聚簇索引特点 1特点 2二、二级索引三、联合索引接上一篇内容:https://www.jb51.net/article/249934.htm 一、聚簇索引 其实之前内容中介绍...
    99+
    2024-04-02
  • mysql数据库的高级应用索引、视图,触发器的详细介绍
    下文主要给大家带来mysql数据库的高级应用索引、视图,触发器的详细介绍,希望这些内容能够带给大家实际用处,这也是我编辑mysql数据库的高级应用索引、视图,触发器的详细介绍这篇文章的主要目的。好了,废话不...
    99+
    2024-04-02
  • mysql的索引类型介绍
    这期内容当中小编将会给大家带来有关mysql的索引类型介绍,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。Mysql目前主要有以下几种索引类型:Full-text,HASH...
    99+
    2024-04-02
  • MySQL索引的详细介绍
    这篇文章主要介绍MySQL索引的详细介绍,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!一、什么是索引?  在关系数据库中,索引是一种单独的、物理的对数据库表中一列或多列的值进行排序的...
    99+
    2024-04-02
  • MySQL高可用——PXC简介
    PXC简介:    galera产品是以galera cluster方式为mysql提高高可用集群解决方案的。galera cluster就是集成了galera插件的mysql集群。ga...
    99+
    2024-04-02
  • MySQL视图和索引专篇精讲
    目录视图View代码实现:索引index建立索引删除索引数据库版本:mysql8。0.27 如果以下代码执行有问题欢迎一起探讨 视图View 什么是视图? 视图是一个虚拟表,是sql...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作