一、索引简介

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存储引擎,并且空间索引的字段必须为非空。

mysql索引是什么 优点和缺点_MySQL索引优缺点、使用原则及种类介绍相关推荐

  1. mysql用索性的好处_MySql索引的优缺点

    优点 有了索引.对于记录数量很多的表,可以提高查询速度. 缺点 索引是占用空间的. 索引会影响update insert delete速度 ALERT!!! 1.索引要创建在where和join用到的 ...

  2. mysql更新索引不影响业务_mysql索引更新要多久

    MySQL索引的建立对于MySQL的高效运行是很重要的,索引可以大大提高MySQL的检索速度. 打个比方,如果合理的设计且使用索引的MySQL是一辆兰博基尼的话,那么没有设计和使用索引的MySQL就是 ...

  3. mysql是如何管理数据结构_MySQL索引背后的数据结构和原理

    这是我看到的一篇博客,讲得非常详细,分享给大家:http://blog.codinglabs.org/articles/theory-of-mysql-index.html Abstract: 本文以 ...

  4. mysql索引4种结构_mysql索引:四种类型,两种方法

    1. 普通索引:最基本的索引,它没有任何限制,用于加速查询. 2. 唯一索引unique:索引列的值必须唯一,但允许有空值.如果是组合索引,则列值的组合必须唯一. 3. 主键索引: 是一种特殊的唯一索 ...

  5. mysql索引查2遍_mysql索引优化查询

    一:mysql的引擎简介. 1.ISAM:查找速度快,不支持事物,如果硬盘崩溃则无法恢复. 2.MyISAM:是ISAM的扩展,在web中用的很多,读取速度快,,不支持事物. 3.InnoDB:Inn ...

  6. mysql索引红黑联盟_MySQL索引

    MySQL索引的建立对于MySQL的高效运行是很重要的,索引可以大大提高MySQL的检索速度. 可以把索引看作是汉语字典的目录页,我们可以按拼音.笔画.偏旁部首等排序的目录(索引)快速查找到需要的字. ...

  7. mysql索引分析和优化_MySQL索引分析和优化

    什么是索引? 索 引用来快速地寻找那些具有特定值的记录,所有MySQL索引都以B-树的形式保存.如果没有索引,执行查询时MySQL必须从第一个记录开始扫描整个表的 所有记录,直至找到符合要求的记录.表 ...

  8. mysql code name作为字段_MySQL索引管理及执行计划

    一.索引介绍 1.什么是索引  1)索引就好比一本书的目录,它能让你更快的找到自己想要的内容. 2)让获取的数据更有目的性,从而提高数据库检索数据的性能. 2.索引类型介绍 1)BTREE:B+树索 ...

  9. mysql索引有哪些了解_Mysql索引(简单了解)

    Mysql的存储引擎,可以针对不同的表使用不同的存储引擎 MyISAM:插入,查血速度快,但是不支持事物,所以适用于数据仓库,Web等 InnoDB:支持事物,所以适合于事物型数据库 Memory:是 ...

最新文章

  1. 自定义国内maven镜像包设置settings.xml
  2. 又叒叕是一篇讲缓存的文章
  3. 学习笔记(十六)——MySQL(约束与关系)
  4. LayUi引入JSON文件进行表格重载时出现接口请求异常
  5. SQL基础【二、SQL语法】
  6. shell 字典_腾讯T4周末不陪对象,就为了手打这份shell编程笔记
  7. 压缩版styleGAN(Mobile StyleGAN)参数更少、计算复杂度更低
  8. RabbitMq(十五)消息的追踪查看配置及查看方法
  9. webassembly类型_几张图让你看懂WebAssembly
  10. c语言格式化 病毒源码,【病毒】震荡波病毒C语言源码
  11. 曲线拟合的线性最小二乘法
  12. Spring MVC如何配置OpenSessionInViewInterceptor并结合Hibernate使用
  13. 将Linux下python默认版本切换成替代版本
  14. (一)PyQt5系列教程:使用PyQt5创建一个简单的demo
  15. matlab qpsk调制程序,MATLAB QPSK调制及解调.doc
  16. 翻译PDG官方教程:一个最简单的特效PDG流程(步骤详细)
  17. CDN加速解决VSCode下载速度慢的问题
  18. 时域OCT(TD-OCT) 我的理解
  19. java ico_Java 读写 ICO 图像
  20. Oracle中慎用Like等通配符

热门文章

  1. 华为交换机端口转发规则
  2. Java项目:SSM航班机票销售预订平台网站
  3. mysql revoke 列权限_MYSQL用户权限管理(Grant,Revoke)
  4. 登陆qq时显示服务器错误,刚才想上QQ的时候,显示无法登陆QQ,显示连接服务器超时,错误代码0x00000001是怎么回事啊!!急...
  5. jSignature 横屏_怎么把视频上下弄背景?教你抖音横屏视频上下填充剪辑方法
  6. MATLAB 傅里叶普和相角,傅里叶变换在MATLAB中傅里叶系数相位角计算pwelch和cspd使用...
  7. 阻止js方法继续执行
  8. PHP检测字数,js判断文本框剩余可输入字数的方法
  9. 安科瑞开口式剩余电流互感器在工业改造项目的应用-卓宋兰
  10. 你也是业务开发?提前用这个设计模式预防产品加需求吧