简单认识MySQL数据库索引

这篇具有很好参考价值的文章主要介绍了简单认识MySQL数据库索引。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


一、索引的概念

1、简介

●索引是一个排序的列表,在这个列表中存储着索引的值和包含这个值的数据所在行的物理地址(类似于C语言的链表通过指针指向数据记录的内存地址)。
●使用索引后可以不用扫描全表来定位某行的数据,而是先通过索引表找到该行数据对应的物理地址然后访问相应的数据,因此能加快数据库的查询速度。
●索引就好比是一本书的目录,可以根据目录中的页码快速找到所需的内容。
●索引是表中一列或者若干列值排序的方法。
●建立索引的目的是加快对表中记录的查找或排序

2、作用

●设置了合适的索引之后,数据库利用各种快速定位技术,能够大大加快查询速度,这是创建索引的最主要的原因。
●当表很大或查询涉及到多个表时,使用索引可以成千上万倍地提高查询速度。
●可以降低数据库的IO成本,并且索引还可以降低数据库的排序成本。
●通过创建唯一(键)性索引,可以保证数据表中每一行数据的唯一性。
●可以加快表与表之间的连接。
●在使用分组和排序时,可大大减少分组和排序的时间。

3、索引的副作用:

●索引需要占用额外的磁盘空间。
对于 MyISAM 引擎而言,索引文件和数据文件是分离的,索引文件用于保存数据记录的地址。
而 InnoDB 引擎的表数据文件本身就是索引文件。
●在插入和修改数据时要花费更多的时间,因为索引也要随之变动。

4、创建索引的原则依据

索引虽可以提升数据库查询的速度,但并不是任何情况下都适合创建索引。因为索引本身会消耗系统资源,在有索引的情况下,数据库会先进行索引查询,然后定位到具体的数据行,如果索引使用不当,反而会增加数据库的负担。
●表的主键、外键必须有索引。因为主键具有唯一性,外键关联的是子表的主键,查询时可以快速定位
●记录数超过300行的表应该有索引。如果没有索引,需要把表遍历一遍,会严重影响数据库的性能。
●经常与其他表进行连接的表,在连接字段上应该建立索引。
●唯一性太差的字段不适合建立索引。
●更新太频繁地字段不适合创建索引。
●经常出现在 where 子句中的字段,特别是大表的字段,应该建立索引。
select name,score from ky19 where id=1
●索引应该建在选择性高的字段上。
●索引应该建在小字段上,对于大的文本字段甚至超长字段,不要建索引。

5、索引的分类

普通索引:最基本的索引类型。
唯一索引:索引列每个值都唯一(允许有空值),且添加唯一键时会自动创建唯一索引。
主键索引:就是主键 ,一个表只能有一个主键,主键字段的值不允许为NULL,也不允许重复。
组合索引:由多列组合的索引,可以做普通组合索引,唯一组合索引(多列组合的值不能重复,其中某个单列是可以重复的)。且需要满足最左原则,即使用 SELECT 语句查询时 WHERE 条件使用的字段顺序必须和组合索引中的排序一致,否则索引将不会生效。
全文索引:适合在进行模糊查询的时候使用,可用于在一篇文章中检索文本信息。Mysql15.6 版本以前 FULLTEXT 索引仅可用于 MyISAM 引擎,在5.6版本之后 innoDB 引擎也支持FULLTEXT 索引。全文索引可以在CHAR、VARCHAR 或者 TEXT 类型的列上创建。

二、索引的增删改查

1.创建索引

(1)创建普通索引

直接创建

CREATE INDEX 索引名 ON 表名 (字段名(数据类型长度));

简单认识MySQL数据库索引,数据库,mysql,oracle
简单认识MySQL数据库索引,数据库,mysql,oracle
修改表结构
简单认识MySQL数据库索引,数据库,mysql,oracle
创建时指定索引

CREATE TABLE 表名 (字段1 数据类型,字段2 数据类型,... ,INDEX 索引名 (字段名(数据类型长度));

简单认识MySQL数据库索引,数据库,mysql,oracle
简单认识MySQL数据库索引,数据库,mysql,oracle

(2)创建唯一索引

直接创建

CREATE UNIQUE INDEX 索引名 ON 表名 (字段名(数据类型长度));

简单认识MySQL数据库索引,数据库,mysql,oracle
简单认识MySQL数据库索引,数据库,mysql,oracle
修改表结构
简单认识MySQL数据库索引,数据库,mysql,oracle
创建唯一键自动生成
简单认识MySQL数据库索引,数据库,mysql,oracle

(3)创建主键索引

修改表结构
简单认识MySQL数据库索引,数据库,mysql,oracle
创建表时指定主键
简单认识MySQL数据库索引,数据库,mysql,oracle

(4)创建(唯一)组合索引

直接创建索引
简单认识MySQL数据库索引,数据库,mysql,oracle
修改表结构
简单认识MySQL数据库索引,数据库,mysql,oracle

(5)创建和使用全文索引查询

直接创建索引
简单认识MySQL数据库索引,数据库,mysql,oracle
修改表结构
简单认识MySQL数据库索引,数据库,mysql,oracle
创建表时指定全文索引
简单认识MySQL数据库索引,数据库,mysql,oracle
使用全文索引查询
简单认识MySQL数据库索引,数据库,mysql,oracle

2.删除索引

DROP INDEX 索引名 ON 表名;

简单认识MySQL数据库索引,数据库,mysql,oracle

ALTER TABLE 表名 DROP INDEX 索引名;

简单认识MySQL数据库索引,数据库,mysql,oracle

3.查看索引

SHOW INDEX FROM 表名;         或        SHOW KEYS FROM 表名;

简单认识MySQL数据库索引,数据库,mysql,oracle
各字段的含义:

Table 表的名称
Non_unique 如果索引内容唯一,则为 0;如果可以不唯一,则为 1。
Key_name 索引的名称。
Seq_in_index 索引中的列序号,从 1 开始。 limit 2,3
Column_name 列名称。
Collation 列以什么方式存储在索引中。在 MySQL 中,有值‘A’(升序)或 NULL(无分类)。
Cardinality 索引中唯一值数目的估计值。
Sub_part 如果列只是被部分地编入索引,则为被编入索引的字符的数目(zhangsan)。如果整列被编入索引,则为 NULL。
Packed 指示关键字如何被压缩。如果没有被压缩,则为 NULL。
Null 如果列含有 NULL,则含有 YES。如果没有,则该列含有 NO。
Index_type 用过的索引方法(BTREE, FULLTEXT, HASH, RTREE)。
Comment 备注。文章来源地址https://www.toymoban.com/news/detail-572138.html

到了这里,关于简单认识MySQL数据库索引的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • MySQL数据库索引机制

    MySQL数据库索引机制

    MySQL是一款有客户端和服务端的网络应用,mysql是它的客户端,mysqld是它的服务端。服务端本质就是一个进程,它存在于内存当中。而我们存储在MySQL中的数据是保存在磁盘上的,当我们对MySQL中数据进行增删查改操作时,不可能是直接在磁盘上进行操作,而是将对应的数据加

    2024年02月12日
    浏览(45)
  • MySQL数据库唯一索引

    MySQL数据库唯一索引

    创建索引是指在某个表的一列或多列上建立一个索引,以便提高对表的访问速度。创建索引有3种方式,分别是1.创建表的时候创建索引、2.在已经存在的表上创建索引和使用3.ALTER TABLE语句来创建索引。 本文福利, 莬 费领取Qt开发学习资料包、技术视频,内容包括(C++语言基

    2024年02月08日
    浏览(42)
  • MySQL数据库索引的数据结构

    数据库索引的功能就是让查找更加的高效,所以索引的数据结构应该是能够加速查找的数据结构。 MySQL的innoDB存储引擎的索引的数据结构就是多叉搜索树中的b+树,这可以说是为索引量身定做的一个数据结构。 首先,索引可以通过主键,unique修饰创建,也可以直接使用sql语句

    2024年02月10日
    浏览(13)
  • MySQL数据库之JDBC编程(从认识到操作)

    MySQL数据库之JDBC编程(从认识到操作)

    目录 前言 一.JDBC的认识 1.1JDBC的来源 1.2JDBC的概念 二.JDBC的导包  三.JDBC的四步操作 三.JDBC常用的类和方法  3.1常用类 3.2常见方法 🎁个人主页:tq02的博客_CSDN博客-C语言,Java,Java数据结构领域博主 🎥 本文由 tq02 原创,首发于 CSDN🙉 🎄 本章讲解内容: JDBC的详细讲解 🎥学习

    2024年02月15日
    浏览(37)
  • 【MySql系列】深入解析数据库索引

    【MySql系列】深入解析数据库索引

    MySQL索引是数据库中一个关键的概念,它可以极大地提高查询性能,加快数据检索速度。但是,要充分发挥索引的作用,需要深入理解它们的工作原理和使用方式。 在本文中,我们将深入解析MySQL索引,探讨它们的重要性、类型、创建、维护以及最佳实践。 在数据库中,索引

    2024年02月08日
    浏览(17)
  • 【MySQL数据库 | 第十七篇】索引以及索引结构介绍

    【MySQL数据库 | 第十七篇】索引以及索引结构介绍

    目录 前言: 索引简介:  索引结构:           二叉树索引结构         Tree(普通二叉树)         B-Tree(多路平衡查找树)         B+Tree          哈希索引数据结构 总结: 在实际生活中,我们对SQL语句进行优化实际上有很大一部分都是对索引进行优化,因此对索引

    2024年02月09日
    浏览(17)
  • DBeaver连接mysql、oracle数据库

    DBeaver连接mysql、oracle数据库

    1) 下载DBeaver https://dbeaver.io/download/,并安装 2) 新建数据库连接    3)选择mysql驱动程序  4)填写连接设置内容 5)点击 “编辑驱动设置”,并填写相关信息  6)选择本地自己下载的驱动库jar包 (也可以点击下载驱动)  7)完成后,点击测试连接,可以查看是否连接成功

    2024年02月05日
    浏览(12)
  • 查询数据库空间(mysql和oracle)

    1.查看数据库表空间文件: 2.查看所有表空间的总容量: 3.查看数据库表空间使用率 4.1.查看表空间总大小、使用率、剩余空间 4.2.查看表空间使用率(包含temp临时表空间) 5.查看具体表的占用空间大小 1.更改表空间的dbf数据文件分配空间大小 2. 为表空间新增一个数据文件(表空间

    2024年02月05日
    浏览(14)
  • 数据库去重(MYSQL和ORACLE)

    一、数据库中的去重操作(删除数据库中重复记录的SQL语句)主要有三种方法 (1)、rowid方法 (2)、group by 方法 (3)、distinct方法 1、用rowid方法 根据Oracle带的rowid属性,可以进行判断是否存在重复语句; (1)、查出表1和表2中name相同的数据 Select * from table1 a Where rowid !=

    2024年02月09日
    浏览(12)
  • 【Mysql系列】——详细剖析数据库“索引”【上篇】

    【Mysql系列】——详细剖析数据库“索引”【上篇】

        😎博客昵称:博客小梦 😊最喜欢的座右铭:全神贯注的上吧!!! 😊作者简介:一名热爱C/C++,算法,数据库等技术、喜爱运动、热爱K歌、敢于追梦的小博主! 😘博主小留言:哈喽! 😄各位CSDN的uu们,我是你的博客好友小梦,希望我的文章可以给您带来一定的帮

    2024年02月02日
    浏览(10)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包