mysql索引是什么 优点和缺点_MySQL索引优缺点、使用原则及种类介绍「建议收藏」

mysql索引是什么 优点和缺点_MySQL索引优缺点、使用原则及种类介绍「建议收藏」一、索引简介1、索引简介索引(Index)是帮助MySQL高效获取数据的数据结构。在MySQL中,索引属于存储引擎级别的概念,不同存储引擎对索引的实现方式是不同的。MyISAM和InnoDB存储引擎只支持BTREE索引,MEMORY/HEAP存储引擎支持HASH和BTREE索引。2、索引的优点A、提高数据检索效率,降低数据库的IO成本。B、通过索引对数据进行排序,降低数据排序的成本降低了CPU的消…

大家好,又见面了,我是你们的朋友全栈君。

一、索引简介

1、索引简介

索引(Index)是帮助MySQL高效获取数据的数据结构。

在MySQL中,索引属于存储引擎级别的概念,不同存储引擎对索引的实现方式是不同的。MyISAM和InnoDB存储引擎只支持BTREE索引,MEMORY/HEAP存储引擎支持HASH和BTREE索引。

2、索引的优点

A、提高数据检索效率,降低数据库的IO成本。

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

C、大大加快数据的查询数据。

3、索引的缺点

A、创建索引和维护索引要耗费时间,并且随着数据量的增加所耗费的时间也会增加

B、索引也需要占空间,我们知道数据表中的数据也会有最大上线设置的,如果我们有大量的索引,索引文件可能会比数据文件更快达到上线值

C、当对表中的数据进行增加、删除、修改时,索引也需要动态的维护,降低了数据的维护速度。

4、索引的使用原则

A、主键自动建立唯一索引

B、频繁作为查询条件的字段应该创建索引

C、查询中与其他表关联的字段,外键关系建立索引

D、频繁更新的字段不适合建立索引,因为每次更新不单单是更新了记录还会更新索引

E、WHERE条件里用不到的字段不创建索引

F、单键/组合索引的选择问题,who?(在高并发下倾向创建组合索引)

G、查询中排序的字段,排序的字段若通过索引去访问将大大提高排序速度

H、查询中统计或者分组字段

不适合使用索引的场合:

A、对经常更新的表就避免对其进行过多的索引,对经常用于查询的字段应该创建索引。

B、数据量小的表最好不要使用索引,由于数据较少,可能查询全部数据花费的时间比遍历索引的时间还要短,索引就可能不会产生优化效果。

C、在不同值少的列上不要建立索引,比如在学生表的”性别”字段上只有男,女两个不同值。在一个不同值较多的列可以建立索引。

二、索引的分类

1、单列索引

单列索引只包含单个列,但一个表中可以有多个单列索引。

A、普通索引

普通索引允许在定义索引的列中插入重复值和空值。

B、唯一索引

索引列中的值必须是唯一的,但是允许为空值。

C、主键索引

主键索引是一种特殊的唯一索引,不允许有空值。

2、复合索引

在表中的多个字段组合上创建的索引,只有在查询条件中使用了组合的多个字段的左边字段时,索引才会被使用,使用复合索引时遵循最左前缀集合。

3、全文索引

全文索引,只有MyISAM存储引擎支持,只能在CHAR、VARCHAR、TEXT类型字段上使用全文索引。

全文索引主要用来查找文本中的关键字,而不是直接与索引中的值相比较。在数据量较大时候,先将数据放入一个没有全文索引的表中,然后再用CREATE index创建fulltext索引,要比先为一张表建立fulltext然后再将数据写入的速度快很多。

4、空间索引

空间索引是对空间数据类型的字段建立的索引,MySQL中的空间数据类型有四种:GEOMETRY、POINT、LINESTRING、POLYGON。

在创建空间索引时,使用SPATIAL关键字。

空间索引必须使用MyISAM存储引擎,并且空间索引的字段必须为非空。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/141298.html原文链接:https://javaforall.net

(0)
上一篇 2022年5月26日 上午9:20
下一篇 2022年5月26日 上午9:40


相关推荐

  • python test suite_vue进度条插件

    python test suite_vue进度条插件前言在我们进行自动化测试的时候,用例往往是成百上千,执行的时间是几十分钟或者是小时级别。有时,我们在调试那么多用例的时候,不知道执行到什么程度了,而pytest-sugar插件能很好解决我们的痛点。

    2022年7月31日
    4
  • 数据库关系代数除法意义_关系代数运算除法

    数据库关系代数除法意义_关系代数运算除法除法运算的定义:这个概念的描述的非常抽象,刚开始学习的同学完全不知所云。这里通过一个实例来说明除法运算的求解过程设有关系R、S如图所示,求R÷S的结果求解步骤过程:第一步:找出关系R和关系S中相同的属性,即Y属性。在关系S中对Y做投影(即将Y列取出);所得结果如下第二步:被除关系…

    2025年8月1日
    4
  • jQuery遮罩层登录对话框

    用户登录是许多网站必备的功能。有一种方式就是不管在网站的哪个页面,点击登录按钮就会弹出一个遮罩层,显示用户登录的对话框。这用方式比较灵活方便。而现在扫描二维码登录的方式也是很常见,例如QQ、微信、百度

    2021年12月28日
    38
  • Anaconda安装opencv3.4.1.15

    Anaconda安装opencv3.4.1.15因为 opencv 中的有些图像提取特征点的算法 在 3 4 2 以后的版本都用不了 因为算法申请了专利 这里推荐大家安装 3 4 1 15 这个版本 实测可以使用但是有的同学安装的时候 会报错 找不到这个包 那是因为 python 需要 3 6 的才能支持该版本 所以我们先创建一个 3 6 版本的 python 环境然后再安装 pipinstallop python 3 4 1 15pipinstall contrib python 3 4 1 15 注意 清华源挂了 可以尝试更换中

    2026年3月26日
    2
  • SpringBoot源码分析

    SpringBoot源码分析一.SpringApplication.run(Xxx.class,args)源码分析@SpringBootApplicationpublicclassIndexApplication{publicstaticvoidmain(String[]args){SpringApplication.run(IndexApplication.clas…

    2022年5月18日
    58
  • 7款最佳Andi替代方案:2025年理想的AI助手

    7款最佳Andi替代方案:2025年理想的AI助手

    2026年3月15日
    19

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号