MySQL学习总结(三)索引
补充一下,上一章节中约束的一点东西。我们在为约束设置名称的时候(标识符)推荐写法“约束缩写_字段名”,这样让人看起来就会很清晰。例如:FK_Deptno,我们通过索引的名字就可以大概知道这是一个设置的关于Deptno字段的外键。
一个索引包含表中按照一定顺序排序的一列或者多列字段。创建索引主要是为了提高从表中检索数据的速度。但是创建索引有利也有弊,优点是通过索引,可以提高查询的速度。但是过多的创建索引会占据许多的磁盘空间,因此在创建索引的时候一定要权衡利弊。
以下情况适合创建索引:
(1)经常被查询的字段
(2)经常出现在分组中的字段
(3)表的主键或者是外键字段
(4)设置唯一完整性约束的字段
以下情况不适合创建索引:
(1)在查询中很少被使用的字段
(2)拥有许多重复的值的字段
索引名在设置的时候,建议“index_字段名”,这样看起来很清晰。
索引根据创建方式又可以分为两类,自动索引和手动索引。通过名称我们可以简单的理解,自动索引就是自动创建的索引(和废话一样。。),在设置表的主键或者其他设置完整性约束的时候,MySQL系统会自动创建索引。而手动索引,指的是我们主动在表上创建的索引,如下图所示:

1、创建索引
1.1 、创建普通索引
CREATE TABLE table_name(
属性名 数据类型,
属性名 数据类型,
…
INDEX 索引名(属性名1)
)
1.2、在已经存在的表上创建普通索引
CREATE INDEX 索引名 ON 表名 (属性名)
1.3、ALTER TABLE创建普通索引
ALTER TABLE table_name ADD INDEX 索引名 (属性名)
2、创建唯一索引
唯一索引,就是在创建索引的时候,限制索引值必须是唯一值,通过该类型的索引可以更快的查询某条记录。
2.1 、创建表时创建唯一索引
CREATE TABLE table_name(
属性名 数据类型,
属性名 数据类型,
…
UNIQUE INDEX 索引名(属性名1)
)
2.2、在已经存在的表上创建唯一索引
CREATE UNIQUE INDEX 索引名 ON 表名 (属性名)
2.3、ALTER TABLE创建唯一索引
ALTER TABLE table_name ADD UNIQUE INDEX 索引名 (属性名)
注意:创建唯一索引的时候,如果表中该字段有为空值的时候,则唯一索引会创建失败。
3、创建全文索引
全文索引主要关联在数据库中数据类型为CHAR、VARCHAR、TEXT的字段上,以便能够更加快速的查询数据量较大的字符串类型的字段。
3.1 、创建表时创建全文索引
CREATE TABLE table_name(
属性名 数据类型,
属性名 数据类型,
…
FULLTEXT INDEX 索引名(属性名1)
)
3.2、在已经存在的表上创建全文索引
CREATE FULLTEXT INDEX 索引名 ON 表名 (属性名)
3.3、ALTER TABLE创建全文索引
ALTER TABLE table_name ADD FULLTEXT INDEX 索引名 (属性名)
4、通过SQLyog创建索引
右键要创建索引的表,选择改变表菜单,点击“2个索引”,如下图所示:
通过SQLyog软件,我们可以更加方便快捷的创建索引。而且界面也很简单,易上手。
5、删除索引
SQL语法:DROP INDEX index_name ON table_name;
通过SQLyog软件,在表——>索引,点击节点前面的加号,选中要删除的索引,右键选择“删除索引”,根据提示选择是,成功删除,如图:
或在改变表的索引列下删除,上面已经介绍过。
MySQL学习总结(三)索引的更多相关文章
- MySQL学习笔记(三)—索引
一.概述 1.基本概念 在大型数据库中,一张表中要容纳几万.几十万,甚至几百万的的数据,而当这些表与其他表连接后,所得到的新的数据数目更是要大大超出原来的表.当用户检索这么大量的数据时,经 ...
- MYSQL学习笔记三:日期和时间函数
MYSQL学习笔记三:日期和时间函数 1. 获取当前日期的函数和获取当前时间的函数 /*获取当前日期的函数和获取当前时间的函数.将日期以'YYYY-MM-DD'或者'YYYYMMDD'格式返回 */ ...
- MySql学习笔记三
MySql学习笔记三 4.DML(数据操作语言) 插入:insert 修改:update 删除:delete 4.1.插入语句 语法: insert into 表名 (列名1,列名2,...) val ...
- 基于CentOS的MySQL学习补充三--使用Shell批量创建数据库表
本文出处:http://blog.csdn.net/u012377333/article/details/47006087 接上篇介绍<基于CentOS的Mysql学习补充二--使用Shell创 ...
- MySQL 学习 --- 数据结构和索引
本文参考了多篇文章集成的笔记,希望各位学习之前可以阅读以下参考资料先 概述 文章分几个部分 :第一部分介绍了B-Tree 和 B+Tree 这种数据结构作为索引:第二部分介绍索引的最左前缀原则和覆盖索 ...
- 转MYSQL学习(三) 函数
这一节主要介绍MYSQL里的函数,MYSQL里的函数很多,我这里主要介绍MYSQL里有而SQLSERVER没有的函数 数学函数 1.求余函数MOD(X,Y) MOD(X,Y)返回x被y除后的余数,MO ...
- MySQL学习(三)主备分库分表和恢复数据 --- 2019年2月
1.MySQL主备切换 readonly 设置对超级(super)权限是无效的,而用于同步更新的线程,就拥有超级权限. 建议在做主备数据库的时候,将备用数据库设置为只读.(反向用readonly来判断 ...
- mysql学习笔记--数据库索引
一.索引的优点:查询速度快 二.索引的缺点: 1. 增.删.改(数据操作语句)效率低了 2. 索引占用空间 三.索引类型: 1. 普通索引 2. 唯一索引(唯一键) 3. 主键索引:只要主键就自动创建 ...
- mysql学习笔记三 —— 数据恢复与备份
要点: 1.存储引擎2.导入导出3.备份与恢复 查看当前数据库中的所有表use db1:show tables: 1.存储引擎 不同的发动机(引擎)适用的汽车类型不一样. 存储和处理的不同方式.不同的 ...
- MySQL学习(三)MySQL锁与事务
本章我们着重讨论MySQL锁机制的特点,常见的锁问题,以及解决MySQL锁问题的一些方法或建议. 一.MySQL锁概述 相对其他数据库而言,MySQL的锁机制比较简单,其最显著的特点是不同的存储引擎支 ...
随机推荐
- 如何修改wamp目录【成功】
Wampserver安装好后,“www目录”默认为X:/wamp/www,(这里的X是盘符)也就是wampserver安装目录下的www文件夹.实际使用中,默认设置往往不是我们想要的,可能改成其他文件 ...
- 51nod 1137 矩阵乘法【矩阵】
1137 矩阵乘法 基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题 收藏 关注 给出2个N * N的矩阵M1和M2,输出2个矩阵相乘后的结果. Input 第1行 ...
- CSU 1328 近似回文词【最长回文字符串(三种方法)】
输入一行文本,输出最长近似回文词连续子串.所谓近似回文词是指满足以下条件的字符串: 1. S以字母开头,字母结尾 2. a(S)和b(S)最多有2k个位置不同,其中a(S)是S删除所有非字母字符并且把 ...
- Linux命令之vim(二)
这一章主要介绍vim编辑器的内部使用方法和注意事项 vim编辑器有四种工作模式:正常模式.插入模式.命令模式.可视模式.简单的判断方法就是看底部,什么都没有就是正常模式,光标在编辑器最底下时则是命令模 ...
- ( 转 ) 什么是 JWT -- JSON WEB TOKEN
什么是JWT Json web token (JWT), 是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准((RFC 7519).该token被设计为紧凑且安全的,特别适用于分布式站点 ...
- CentOS 安装 Zookeeper 版本任选
Zookeeper下载地址各种版本自己选择: https://mirrors.tuna.tsinghua.edu.cn/apache/zookeeper/ Zookeeper 3.4.13版本下载地址 ...
- [BZOJ 2006] 超级钢琴
Link: https://www.lydsy.com/JudgeOnline/problem.php?id=2006 Algorithm: 对于此类区间最值类问题,我们可以通过控制一端不变来寻找当前 ...
- bzoj 5347: 冒泡排序
考虑到最后a[i]都要等于i,并且每个 a[i] < i 的a[i] 一轮最多向前走一次,所以局数至少是 max{ i - a[i] }. 又因为对于a[i] < i来说,一轮不动意味着 ...
- CodeForces 786B Legacy(线段树优化建图+最短路)
[题目链接] http://codeforces.com/problemset/problem/786/B [题目大意] 给出一些星球,现在有一些传送枪,可以从一个星球到另一个星球, 从一个星球到另一 ...
- [CF235E]Number Challenge
$\newcommand{fl}[1]{\left\lfloor#1\right\rfloor}$题意:求$\sum\limits_{i=1}^a\sum\limits_{j=1}^b\sum\lim ...

