博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【MySQL】MySQL的索引
阅读量:7244 次
发布时间:2019-06-29

本文共 897 字,大约阅读时间需要 2 分钟。

索引是存放在模式中的一个数据库对象,虽然索引总是从属于数据表,但它也和数据表一样属于数据库对象。创建索引的唯一作用就是加速对表的查询,索引通过使用快速路径访问方法来快速定位数据,从而减少了磁盘的I/O。

MySQL使用information_schema数据库里的STATISTICS来保存该数据库实例中的所有索引信息,用户可通过查询该表来获取该数据库的索引信息。

创建索引有两种方式:

1.自动:当表上的定义主键约束,外键约束和唯一键约束的时候,系统会自动创建该数据列的索引。

2.手动:用户可以通过create index...语句来创建索引。

 

索引的作用类似于书的目录,几乎没有一本书没有目录,因此几乎没有一个表没有索引。一个表中可以有多个索引列,每个索引列都用于加速该列的查询速度。

创建索引的语法:

create index index_name on table_name(column[,column]...);

下面的索引将会提高对employee表基于last_name字段的查询

create index emp_last_name_idx on employee(last_name);

也可同时对多列建立索引,

create index emp_last_name_idx2 on employee(first_name,last_name);

MySQL删除索引需要指定表:

drop index 索引名 on 表名

如下SQL语句删除了employee表上的emp_last_name_idx2索引

drop index emp_last_name_idx2 on employee

有些数据库删除索引时无需指定表名,因为他们要求建立索引时,每个索引都要有自己的名字,所以无需指定表名,列如Oracle就采用这种策略。但MySQL只要求同一个表内的索引不能同名,所以删除索引时必须指定表名。

索引有好处,当然也有坏处,索引的缺点:

1.与书的目录类似,当数据表中的记录被添加、删除、修改时,数据库需要维护索引,因此有一定的开销。

2.存储索引信息需要一定的磁盘空间。

转载地址:http://oaybm.baihongyu.com/

你可能感兴趣的文章
日志框架logj的使用
查看>>
架构师必看-架构之美第14章-两个系统的故事:现代软件神话(一)
查看>>
struts2从2.2.3升级到2.3.15.1步骤
查看>>
你所不了解的静态路由特点及配置
查看>>
37、pendingIntent 点击通知栏进入页面
查看>>
TCP为何采用三次握手来建立连接,若采用二次握手可以吗?
查看>>
Jfreet 自动删除生成的图片
查看>>
snmp
查看>>
java笔记----java新建生成用户定义注释
查看>>
批量删除记录时如何实现全选【总结】
查看>>
Thread’s start method and run method
查看>>
使用ASP.NET Web Api构建基于REST风格的服务实战系列教程【二】——使用Repository模式构建数据库访问层...
查看>>
CDN发展史
查看>>
Atitit.研发团队的管理原则---立长不立贤与按资排辈原则
查看>>
UVa 10763 - Foreign Exchange
查看>>
#lspci | grep Eth
查看>>
日订单峰值破40万!58速运订单调度系统架构大解密
查看>>
Objective-C 资源收藏
查看>>
MFC——从实现角度分析微云界面
查看>>
正则 群组 Group
查看>>