什么是索引:当你在字典中查找你的名字的时候,你有两种方式。第一、一页一页的翻,第二、通过拼音、笔画,等查找。那么第二种方式就是通过索引的方式查找。那么在myslq中数据库也是这么干的。索引可以增加查询速度,但是同时mysql维护索引也需要耗费性能。

索引的分类:

| 主键索引

如果一个字段为主键(primary key),则mysql会自动在该字段上建立主键索引

| 唯一索引

如果一个字段的值,在整张表中是唯一的,那么就可以在该字段上建立唯一索引,一旦通过唯一索引查找到了数据,就不需要继续查找了,因为它唯一的。它与主键索引的区别是主键索引必须建立在 主键上。

| 普通索引

如果在一个不是主键、其值不是唯一的字段上建立索引,则此类索引就是普通索引。

| 全文索引

如果在某个字段上建立了全文索引,则mysql会将该字段内的值,它认为是关键字的字眼抽取出来,然后对每个关键字建立索引,这就是全文索引。注意:全文索引需要myisam引擎支持。

| 复合索引

我们在建立索引的时候,可以针对多个字段,一起建立索引。当使用多个字段在一起建立索引时,此类索引为复合索引。

建立唯一索引或全文索引:

语法1: create  [unique|fulltext]  index index_name on table_name (table_ field);

例:地方在goods表的goods_name字段上建立了一个名为goods_name的普通索引。

建立普通索引或复合索引:

语法2:alter tabel table_name add index index_type index_name (field);

例:

查询索引:

语法:

1、show index from table_name;

2、show keys from table_name;

例:

删除索引:

语法1:drop index index_name

on table_name;

例:

语法2:alter table

table_name drop index index_name;

例:

测试索引效果:

语法:explain select语句;

例:

没有索引的情况:

有索引的情况:

select_type:查询类型,说明

Type:这是重要的列,显示连接使用了何种类型。从最好到最差的连接类型为 const、eq_reg、ref、range、index和ALL

all:full table scan ;mysql将遍历全表以找到匹配的行;

index:index scan; index 和 all的区别在于index类型只遍历索引;

range:索引范围扫描,对索引的扫描开始于某一点,返回匹配值的行,常见与between ,< ,>等查询;

ref:非唯一性索引扫描,返回匹配某个单独值的所有行,常见于使用非唯一索引即唯一索引的非唯一前缀进行查找;

eq_ref:唯一性索引扫描,对于每个索引键,表中只有一条记录与之匹配,常用于主键或者唯一索引扫描;

const,system:当mysql对某查询某部分进行优化,并转为一个常量时,使用这些访问类型。如果将主键置于where列表中,mysql就能将该查询转化为一个常量。

索引的坏处:

| 占据磁盘空间。有时候索引的大小要大于数据的大小。

| 减慢了数据插入和删除的速度。因为每次插入和删除的时候都需要更新索引,一个表拥有的索引越多,则写操作的平均性能下降就越大。

| 造成存储碎片的问题。当删除一条记录时将会导致对应的索引中的该记录一的对应项为空,由于索引是采用 B 树结构存储的,所以对应的索引项并不会被删除,经过一段时间的增删改操作后,数据库中就会出现大量的存储碎片。存储碎片不但占据磁盘空间,还降低数据库性能。

mysql默认索引_mysql的索引相关推荐

  1. mysql 普通索引和唯一索引_MySQL 普通索引和唯一索引的区别

    该文为< MySQL 实战 45 讲>的学习笔记,感谢查看,如有错误,欢迎指正 一.查询和更新上的区别 这两类索引在查询能力上是没差别的,主要考虑的是对更新性能的影响.建议尽量选择普通索引 ...

  2. mysql innerdb 索引_mysql innodb索引原理

    聚集索引(clustered index) innodb存储引擎表是索引组织表,表中数据按照主键顺序存放.其聚集索引就是按照每张表的主键顺序构造一颗B+树,其叶子结点中存放的就是整张表的行记录数据,这 ...

  3. mysql的联合索引_mysql联合索引

    联合索引 概念 联合索引又叫复合索引,即一个覆盖表中两列或者以上的索引,例如: index_name(column a,column b) 1 创建方式 执行alter table语句时创建 alte ...

  4. mysql 创建唯一索引_Mysql创建索引

    零:文章概要 这篇文章,主要是和大家一起去了解 索引,然后一起使用CREATE INDEX语法给数据库中的表创建一个索引. 一:先拿电话薄做个类比 假如,一个电话薄里面包含了一个城市的所有人的姓名和电 ...

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

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

  6. mysql 使用索引_mysql使用索引的注意事项

    使用索引的注意事项 使用索引时,有以下一些技巧和注意事项: 1.索引不会包含有NULL值的列 只要列中包含有NULL值都将不会被包含在索引中,复合索引中只要有一列含有NULL值,那么这一列对于此复合索 ...

  7. mysql 动态索引_MySQL的索引

    在日常工作中,我们经常会用到mysql的索引.使用索引的目的基本上就是为了在大量的数据中快速找出某个列中一个特定值的行,简单说就是提高查询效率. 使用索引的优点: 可以快速检索,减少I/O次数,加快检 ...

  8. mysql 创建唯一索引_Mysql普通索引和唯一索引的选择分析

    假设一个用户管理系统,每个人注册都有一个唯一的手机号,而且业务代码已经保证了不会写入两个重复的手机号.如果用户管理系统需要按照手机号查姓名,就会执行类似这样的 SQL 语句: select name ...

  9. mysql默认存储引擎的索引结构是_InnoDB引擎的索引和存储结构

    在Oracle 和SQL Server等数据库中只有一种存储引擎,所有数据存储管理机制都是一样的. 而MySql数据库提供了多种存储引擎.用户可以根据不同的需求为数据表选择不同的存储引擎,用户也可以根 ...

最新文章

  1. 操作系统(科普章节)
  2. wxWidgets:wxIntProperty类用法
  3. 【Numpy学习记录】np.cov详解
  4. linux3.4 内核裁剪,05-S3C2440学习之内核(移植)linux3.4.2移植(2)之yffs2文件系统移植+内核裁剪+内核制作补丁...
  5. 超好:web app变革之rem
  6. 《自然》公布2020科学界十大人物,李兰娟、张永振入选
  7. iOS隐私权限的设置
  8. 验证iaas的sql服务器出现error configuring vRealize automation server
  9. MATLAB电路仿真搭建教程
  10. 试简述smtp通信的三个阶段的过程_POP3_SMTP_IMAP初步介绍
  11. C程序设计试题汇编(第三版)谭浩强主编
  12. 分析微信聊天记录(2)——分析单人的微信聊天记录
  13. 学计算机还是机电一体,上技校学计算机应用好还是机电一体化好?
  14. 从0基础文科生到全国亚军,我的人工智能学习路径
  15. ## java.lang.IllegalStateException:错误 修改
  16. Spring mcv 框架 浅谈
  17. 塔米狗产权项目披露:成都国星通信有限公司13.387%股权转让
  18. 台式计算机经常使用的硬盘是什么尺寸,台式机硬盘和笔记本硬盘能通用吗?有什么区别?...
  19. 自制DynamicProxy开发成功,性能测试提升了1.4倍。(看来微软的realproxy并不弱!导致我无法提升一个数量级)...
  20. 【数字信号】基于matlab GUI DTMF双音多频信号仿真演示系统(戈泽尔算法)【含Matlab源码 016期】

热门文章

  1. 【转】有关“干部身份”
  2. 浏览器 重定向 301 和 302 区别
  3. KTV小助手技术支持
  4. 为什么监控摄像头画面不如手机拍摄视频画面清晰
  5. webpack代码混淆
  6. 高博培训培训已经有一周了,写一篇文章总结一下
  7. 【极简】实体识别和消歧
  8. LocalDateTime去掉T,JSONField失效
  9. java字符流和字节流写入读取文件
  10. matlab的面积法,基于MATLAB的图像处理方法进行面积计算