一、索引的类型

mysql索引的四种类型:主键索引、唯一索引、普通索引和全文索引。通过给字段添加索引可以提高数据的读取速度,提高项目的并发能力和抗压能力。索引优化时mysql中的一种优化方式。索引的作用相当于图书的目录,可以根据目录中的页码快速找到所需的内容。

主键索引:

主键是一种唯一性索引,但它必须指定为PRIMARY KEY,每个表只能有一个主键。

alter table table_name add primary key (`字段名`);

唯一索引:

索引列的所有值都只能出现一次,即必须唯一,值可以为空。

alter table table_name add primary key (`字段名`);

普通索引 :

基本的索引类型,值可以为空,没有唯一性的限制。

alter table table_name add index (`字段名`);

全文索引:

全文索引的索引类型为FULLTEXT。全文索引可以在varchar、char、text类型的列上创建。可以通过ALTER TABLE或CREATE INDEX命令创建。对于大规模的数据集,通过ALTER TABLE(或者CREATE INDEX)命令创建全文索引要比把记录插入带有全文索引的空表更快。MyISAM支持全文索引,InnoDB在mysql5.6之后支持了全文索引。

全文索引不支持中文需要借sphinx(coreseek)或迅搜技术处理中文。

alter table 表名 add FULLTEXT(`字段名`);

二、查看表的所有索引和删除

#查看:

show indexes from `表名`;

#或

show keys from `表名`;

#删除

alter table `表名` drop index 索引名;

三、索引的机制

1.为什么我们添加完索引后查询速度为变快?

传统的查询方法,是按照表的顺序遍历的,不论查询几条数据,mysql需要将表的数据从头到尾遍历一遍

在我们添加完索引之后,mysql一般通过BTREE算法生成一个索引文件,在查询数据库时,找到索引文件进行遍历(折半查找大幅查询效率),找到相应的键从而获取数据

2.索引的代价

2.1创建索引是为产生索引文件的,占用磁盘空间

2.2索引文件是一个二叉树类型的文件,可想而知我们的dml操作同样也会对索引文件进行修改,所以性能会下降

3.在哪些column上使用索引?

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

3.2唯一性太差的字段不适合创建索引,尽管频繁作为查询条件,例如gender性别字段

3.3更新非常频繁的字段不适合作为索引

3.4不会出现在where子句中的字段不该创建索引

总结: 满足以下条件的字段,才应该创建索引.

a: 肯定在where条经常使用 b: 该字段的内容不是唯一的几个值 c: 字段内容不是频繁变化。

四、查看索引的使用情况

show status like '%Handler_read%' ;

handler_read_key:这个值越高越好,越高表示使用索引查询到的次数。

handler_read_rnd_next:这个值越高,说明查询低效。

mysql常见的索引类型_mysql 常用索引类型相关推荐

  1. mysql 常用的列类型_MySQL 常用列类型

    日期和时间类型为DATETIME.DATE.TIMESTAMP.TIME和YEAR. 注意:在MySQL中,日期时间值使用单引号引起来. 相当于Java中Date,Calender. 最常用的整数类型 ...

  2. mysql常见关键字的用法_MySQL 常用关键字用法详解

    MySQL 常用关键字用法详解 在开发工程中,操作数据库的时候经常会有不同类型的条件查询,除了使用where外,Mysql本身也提供了很多常用的关键字.本文主要介绍一些常用的关键字,像update.i ...

  3. mysql 常用字段类型_mysql 常用字段类型

    tinyint[(m)] [unsigned] [zerofill] 1字节 极小整数,数据类型用于保存一些范围的整数数值范围: 有符号: -128 - 127. 无符号: - 255 特别的: My ...

  4. mysql中text对应java什么类型_MySQL 常用字段类型与对应的Java类型

    varchar 不定长字符串 字符串或是没有合适类型时,可以选择它作为字段类型 对应Java中的String int bigint 数值 一般以int作为数字的默认选择,数值很大时使用bigint 对 ...

  5. mysql常见内置函数_MySQL常用内置函数

    1: ASCII(str) 返回字符串str的第一个字符的ASCII值(str是空串时返回0) mysql> select ASCII('2'); -> 50 mysql> sele ...

  6. mysql最常用的索引_mysql常用索引

    1.索引 在关系数据库中,索引是一种单独的.物理的对数据库表中一列或多列的值进行排序的一种存储结构,它是某个表中一列或若干列值的集合和相应的指向表中物理标识这些值的数据页的逻辑指针清单.索引的作用相当 ...

  7. MySQl中文1001无标题_Mysql中字段类型不一致导致索引无效的处理办法

    前两天有个同事算数据,写出来的sql执行很慢.那个sql也很简单,就是一个左联带条件的查询.explain之后发现,其中有一张表没有用到索引.初始以为是没有建索引,于是建上索引再试,发现问题依旧.后来 ...

  8. mysql 索引原理_MySQL InnoDB索引原理和算法

    也许你经常用MySQL,也会经常用索引,但是对索引的原理和高级功能却并不知道,我们在这里一起学习下. InnoDB存储索引 在数据库中,如果索引太多,应用程序的性能可能会受到影响:如果索引太少,又会对 ...

  9. mysql 联合索引 性能_mysql:联合索引及优化

    命名规则:表名_字段名 1.需要加索引的字段,要在where条件中 2.数据量少的字段不需要加索引 3.如果where条件中是OR关系,加索引不起作用 4.符合最左原则 尽量不要用or,如果可以用un ...

最新文章

  1. poj 1681 Painter#39;s Problem(高斯消元)
  2. 神经网络反向传播算法
  3. linux系统中扩展一个逻辑卷,Linux 创建及扩展逻辑卷
  4. python定义空数组_在numpy数组中设置空值
  5. 消消乐实现下坠_手把手教你如何实现iOS消消乐小游戏Demo
  6. superpixels(超像素)
  7. 上帝视角!美国记者用公开数据,还原川普的全天行动轨迹
  8. html excel零不显示,Excel中把0显示为空白的三种解决方法
  9. Scratch编程——跳一跳
  10. 朱松纯团队新作:让AI「读懂」人类价值观!登上Science Robotics
  11. java教程——电商秒杀系统介绍
  12. ceph分布式存储-常见MON故障处理
  13. 计算机网络中的utp指的是,西安交通大学17年5月课程考试《计算机及网络应用基础》作业考核试题...
  14. 使用反射+注解封装一个基于Sqlite极简的android数据库框架
  15. Matlab入门--画一个三维山顶图(将来会画马鞍面)
  16. Unity集成多个arr包
  17. java实例化对象是什么意思
  18. 百家讲坛 王立群读史记之汉武帝
  19. 27飞机大战_发射子弹
  20. Fiddler Everywhere配置

热门文章

  1. python安装requirements.txt文件
  2. 仿真软件matlab中有simunik,Simcenter Amesim 2019.1与Matlab/simulink联合仿真
  3. 安卓 UI 项目:仿照西瓜视频首页 UI界面
  4. 终极一班介绍,终极一班在线播放
  5. 大A社群丨全球宽基ETF轮动(GP02)
  6. 最全Edge浏览器安装扩展程序步骤
  7. Thinkphp5中使用redis队列发送消息
  8. Redis 队列好处
  9. linux基本命令(11)——nl命令
  10. javascript undefined使用场景