MySQL数据库索引:删除、查看、创建索引
索引(index)是对数据库表中一列或多列的值进行排序的一种结构,使用索引可快速访问数据库表中的特定信息。——百度百科
正常的一张表,是无序,如果要进行查询(select)操作,理论上会将表中所有记录进行遍历。并且每次查询都需要从第一条到最后一条挨个查找,以防查漏。这样显然是低效的。
为了解决这个问题,引入了索引的概念。索引是将记录按照某个关键字段(key)进行排序,因此,索引的存在是为了便于检索,使得检索查询更加的快速、高效。
0 索引的基本指令
操作 | 命令 |
---|---|
创建索引 |
CREATE[UNIQUE] INDEX 索引名 ON 表名(列名 [,列名]);
|
查看索引 |
SHOW INDEX FROM 表名;
|
删除索引 |
DROP INDEX 索引名 ON 表名;
|
查看索引使用情况 |
EXPLAIN SELECT ...;
|
1 索引的结构
最常用的一种保存索引的结构是B树(Balanced Tree,平衡树),是一种像枝叶扩散的树状结构。
图片来自百度百科。
通过这样的树状结构,原本需要遍历所有的记录,进行n次查询,现在最多只要 log2(n)log_2(n)次查询。
2 索引操作指令
2.1 创建索引CREATE INDEX
创建索引的代码为:
CREATE INDEX 索引名 ON 表名(列名);
2.2 查看索引show
查看索引代码:
SHOW INDEX FROM 表名;
2.3 删除索引DROP INDEX
删除索引的代码:
DROP INDEX 索引名 ON 表名;
eg:为表employee的lname_pinyin创建一个索引:
>CREATE INDEX idx_lpy ON employee(lname_pinyin);
2.4 创建多列复合索引
eg:为表employee的lname_pinyin,fname_pinyin创建一个复合索引:
>CREATE INDEX idx_lpy ON employee(lname_pinyin,fname_pinyin);
2.5 创建唯一性索引
如果对index制定了UNIQUE关键字,则表示创建了不可重复的索引。
如为表employee的fname创建一个唯一性索引:
>CREATE UNIQUE INDEX idx_lpy ON employee(fname);
当创建了唯一性索引,插入和该列相同的记录,系统会报错。
如果已有数据重复,创建唯一性索引也会报错
但是,如果创建了一个复合的唯一性索引,则只要两列不完全相同,数据可以成功插入
如图,创建了以fname为关键字的索引,“郭美美”就无法插入,系统会提示报错。
创建以lname为关键字的索引,由于lname有重复数据,所以也无法创建该索引。
而如果创建一个复合索引,以fname和lname,则创建成功。
2.6 分析索引优势
通过EXPLAIN可以确认索引的使用情况;
>EXPLAIN SELECT ...;
eg:查看检索查询lname_pinyin的情况;
然后删除索引,再次查看检索查询name_pinyin 的情况:
>EXPALIN SELECT * FROM employee WHERE lname_pinyin='wang'\G
...
>DROP INDEX idx_pinyin ON employee;
...
>EXPALIN SELECT * FROM employee WHERE lname_pinyin='wang'\G
>...
我们可以看到,当建立索引时,遍历次数为2;而当删除索引后,遍历次数为9,和表中记录数相同。
因此,回到之前所讲:
索引可以大大提高检索的效率。
MySQL数据库索引:删除、查看、创建索引相关推荐
- MySQL索引的查看创建和删除
1.索引作用 在索引列上,除了上面提到的有序查找之外,数据库利用各种各样的快速定位技术,能够大大提高查询效率.特别是当数据量非常大,查询涉及多个表时,使用索引往往能使查询速度加快成千上万倍. 例如,有 ...
- mysql修改索引语句_mysql——创建索引、修改索引、删除索引的命令语句
查看表中已经存在 index:show index from table_name; 创建和删除索引索引的创建可以在CREATE TABLE语句中进行,也可以单独用CREATE INDEX或ALTER ...
- 查看mysql数据库 数据量大小和索引数据大小以及行数的方法
查看mysql数据库 数据量大小和索引数据大小以及行数的方法 查看一个数据中所有表的相关信息: (1)可以在命令下使用show table status \G命令查看: (2)如果想知道MySQL数据 ...
- mysql如何创建简单索引_mysql 如何创建索引呢,这个其实很简单
mysql 如何创建索引? mysql 如何创建索引呢,这个其实很简单 create index或者为己有字段增加索引 ALTER TABLE `table_name` ADD UNIQUE (`co ...
- 【Robo3T】为mongodb数据库中的表创建索引的步骤
[Robo3T]为mongodb数据库中的表创建索引的步骤 MongoDB 索引 索引通常能够极大的提高查询的效率,如果没有索引,MongoDB在读取数据时必须扫描集合中的每个文件并选取那些符合查询条 ...
- MySQL索引(什么是索引、如何创建索引、什么时候用索引、索引的作用)
1什么是索引? 简单来讲就是排好序的快速查找数据结构. 2索引的优势劣势 3索引分类和创建索引的命令 4 BTree索引检索原理 5 那些情况适合索引 6 哪些情况不适合创建索引 下图是关于第三种情况 ...
- python如何删除mysql数据库_python删除数据mysql数据库连接
Python学习之旅:访问MySQL数据库 Python学习之旅:访问MySQL数据库 MySQL是Web世界中使用最广泛的数据库服务器.为服务器端设计的数据库,能承受高并发访问. python如何使 ...
- oracle查询表唯一索引,oracle查询索引(oracle查看表索引)
oracle查询索引(oracle查看表索引) 2020-07-24 11:01:26 共10个回答 选中表右键View然后查看index 通过PL/SQL可以直接查看某表是否建索引,通过SQL查询s ...
- lucene全文搜索之三:生成索引字段,创建索引文档(给索引字段加权)基于lucene5.5.3...
前言:上一章中我们已经实现了索引器的创建,但是我们没有索引文档,本章将会讲解如何生成字段.创建索引文档,给字段加权以及保存文档到索引器目录 luncene5.5.3集合jar包下载地址:http:// ...
- 在 MySQL 数据库中删除重复记录的步骤
在 MySQL 数据库中删除重复记录的步骤 当我们在处理数据库中的数据时,有时候会出现重复记录的情况,这些重复记录会影响数据的正确性,需要将其删除.下面是在 MySQL 数据库中删除重复记录的步骤: ...
最新文章
- php怎么删除所有文件夹,用php删除所有文件,文件夹及其子文件夹
- node2vec文献出处_详解Node2vec以及优缺点
- Hibernate模糊查询
- 对象引用 String引用 基本类型引用 差别
- 点云平面提取_基于LiDAR点云数据滤波方法
- adb 静默安装_怎么实现Android APP静默安装
- ShardingSphere(八) 分库分表的多种分片策略
- docker 安装镜像失败_docker(mips 64)安装中文字符集失败
- 混合线路接入时,360、QQ管家等测速显示电信IP或任意线路的IP
- HDU1598 find the most comfortable road【枚举+并查集+最大生成树】
- Django笔记 —— 表单(form)
- linux卸载rpm安装的golang,linux下go安装/卸载重装-Go语言中文社区
- 录制计算机课,如何录制直播网课?教你在电脑上如何录屏!
- idea git push 码云: Remote: [31mYou do not have permission to push to the repository via HTTPS
- php免安装配置方法,mysql免安装版配置步骤详解
- Element Plus的分页组件el-pagination显示英文
- 如何更改域计算机用户名和密码错误,win7加入域失败:未知的用户名或密码错误 | 绿萝...
- 探索设计模式之六——单例模式
- 十年Android程序员图解:用图帮你了解https的原理
- ES6读书笔记(下)