主要内容:
1、什么是索引
2、添加索引sql
3、索引所用的算法
4、补充下概念
5、索引的缺点
6、经典案例

一、什么是索引?
  索引用来快速地寻找那些具有特定值的记录,所有MySQL索引都以B-树的形式保存。如果没有索引,执行查询时MySQL必须从第一个记录开始扫描整个表的所有记录,直至找到符合要求的记录。表里面的记录数量越多,这个操作的代价就越高。如果作为搜索条件的列上已经创建了索引,MySQL无需扫描任何记录即可迅速得到目标记录所在的位置。如果表有1000个记录,通过索引查找记录至少要比顺序扫描记录快100倍。

MySQL中可以使用alter table这个SQL语句来为表中的字段添加索引。

二、添加索引sql:

1.添加PRIMARY KEY(主键索引)

ALTER TABLE `table_name` ADD PRIMARY KEY ( `column` ) 

2.添加UNIQUE(唯一索引)

ALTER TABLE `table_name` ADD UNIQUE index  index_name ( `column` ) 

3.添加INDEX(普通索引)

ALTER TABLE `table_name` ADD INDEX index_name ( `column` )

例子:

ALTER table t_debt_loan_log ADD INDEX debt_no ( `debt_no` ) 

4.添加FULLTEXT(全文索引)

ALTER TABLE `table_name` ADD FULLTEXT index  index_name ( `column`) 

5.添加多列索引

ALTER TABLE `table_name` ADD INDEX index_name ( `column1`, `column2`, `column3` )

三、索引所用的算法:

唯一索引和普通索引使用的结构都是B-tree,执行时间复杂度都是O(log n)。
算法原理:https://www.cnblogs.com/harderman-mapleleaves/p/4528212.html

四、补充下概念:
1、普通索引

  普通索引(由关键字KEY或INDEX定义的索引)的唯一任务是加快对数据的访问速度。因此,应该只为那些最经常出现在查询条件(WHEREcolumn=)或排序条件(ORDERBYcolumn)中的数据列创建索引。只要有可能,就应该选择一个数据最整齐、最紧凑的数据列(如一个整数类型的数据列)来创建索引。
2、唯一索引
  普通索引允许被索引的数据列包含重复的值。比如说,因为人有可能同名,所以同一个姓名在同一个“员工个人资料”数据表里可能出现两次或更多次。
如果能确定某个数据列将只包含彼此各不相同的值,在为这个数据列创建索引的时候就应该用关键字UNIQUE把它定义为一个唯一索引。这么做的好处:一是简化了MySQL对这个索引的管理工作,这个索引也因此而变得更有效率;二是MySQL会在有新记录插入数据表时,自动检查新记录的这个字段的值是否已经在某个记录的这个字段里出现过了;如果是,MySQL将拒绝插入那条新记录。也就是说,唯一索引可以保证数据记录的唯一性。事实上,在许多场合,人们创建唯一索引的目的往往不是为了提高访问速度,而只是为了避免数据出现重复。

3、注意
经过实践发现,不要以为WHERE中的字段顺序无所谓,可以随便放在哪,应该尽可能地第一次就过滤掉大部分无用的数据,只返回最小范围的数据。

五、索引的缺点

到目前为止,我们讨论的都是索引的优点。事实上,索引也是有缺点的。
  首先,索引要占用磁盘空间。通常情况下,这个问题不是很突出。但是,如果你创建每一种可能列组合的索引,索引文件体积的增长速度将远远超过数据文件。如果你有一个很大的表,索引文件的大小可能达到操作系统允许的最大文件限制。
  第二,对于需要写入数据的操作,比如DELETE、UPDATE以及INSERT操作,索引会降低它们的速度。这是因为MySQL不仅要把改动数据写入数据文件,而且它还要把这些改动写入索引文件。

六、 经典案例

解答:


#######添加普通索引
ALTER table writers  add INDEX nameIdx(w_name);########添加唯一索引ALTER TABLE writers add UNIQUE INDEX UniqIdx(w_id);######添加组合索引
CREATE INDEX MultiIdx  on writers(w_address,w_age);#####添加全文索引CREATE FULLTEXT INDEX FIIdx on writers(w_note);show CREATE table writers;#######删除唯一索引ALTER table writers DROP INDEX UniqIdx;####删除组合索引DROP INDEX MultiIdx on writers;#####删除全文索引drop INDEX FIIdx on writers;

【mysql 索引】mysql 添加索引相关推荐

  1. mysql 添加表索引_如何向MySQL表中添加索引?

    如何向MySQL表中添加索引? 我有一个非常大的MySQL表,包含大约15万行数据.目前,当我试着运行SELECT * FROM table WHERE id = '1'; 代码运行良好,因为ID字段 ...

  2. mysql 子查询添加索引_mysql – 你能索引子查询吗?

    我有一个表和一个如下所示的查询.有关工作示例,请参阅此 SQL Fiddle. SELECT o.property_B, SUM(o.score1), w.score FROM o INNER JOI ...

  3. mysql 为表添加索引

    使用ALTER TABLE语句创建索引 语法: ALTER TABLE 表名 ADD 索引类型 (unique,primary key,fulltext,index)[索引名](字段名) 1.添加PR ...

  4. mysql优化(添加索引)

    问题描述: 最近有一台虚拟机CPU运行很高,平常超过50%,到有定时任务时,达到100%. 下图为CPU使用率 cpu utilization 原因分析: 进入到MySQL数据库, 使用查询命令:sh ...

  5. Mysql中大表添加索引的办法

    Hash索引与 Btree索引的区别 http://database.51cto.com/art/201010/229525.htm Creating Indexes/Sorting on very ...

  6. mysql创建索引要加index吗_MySql创建索引,添加索引

    alter table 数据库add index 索引名称(数据库字段名称) PRIMARY KEY(主键索引) ALTER TABLE `table_name` ADD PRIMARY KEY ( ...

  7. mysql 排序字段 添加索引吗_mysql需要在哪些字段上加索引?

    mysql需要加索引的字段:1.经常出现在Where子句中的字段,特别是大表的字段,应该建立索引:2.经常与其他表进行连接的表,在连接字段上应该建立索引:3.分组字段或者排序字段应该创建索引:4.选择 ...

  8. mysql索引与md5_MySQL理解索引、添加索引的原则

    索引用于快速找出在某个列中有一特定值的行.不使用索引,MySQL必须从第1条记录开始然后读完整个表直到找出相关的行,还需要考虑每次读入数据页的IO开销.而如果采取索引,则可以根据索引指向的页以及记录在 ...

  9. Navicat mysql 加索引_mysql 索引 (Navicat添加索引)

    索引类型:NORMAL   索引方法:BTREE 一般这样子设置就OK了 一.sql查询语句 SELECT bp.id AS post_id, `bp`.`title`, bp.img AS bbs_ ...

  10. mysql如何创建添加索引?

    MySQL支持多种方法在单个或多个列上创建索引: 在创建表的时候创建索引: 使用CREATE TABLE创建表时,除了可以定义列的数据类型,还可以定义主键约束.外键约束或者唯一性约束,而不论创建哪种约 ...

最新文章

  1. mysql字段timestamp为空映射报错处理
  2. 水仙花python代码_「每日一练」巧用python打印出所有的水仙花数
  3. C++类的静态成员详解
  4. 索尼笔记本如何进Bios设置U盘启动
  5. php后端语言的基本语法
  6. 90行代码让微信地球转起来,太酷了!(python实现)
  7. MySQL常用函数,你真得看看!
  8. access根据所属院系修改学号_2012年计算机等考二级Access模拟试题四
  9. MongoDB 自动分片 auto sharding
  10. makefile中伪目标的理解
  11. 迅雷连接转化为http链接
  12. 随机过程知识点学习与总结
  13. java 毫秒转换秒_毫秒转换成时分秒 格式:HH:mm:ss Java兑现
  14. html实现贪吃蛇游戏(源码)
  15. Hadoop3.3.1详细教程(四)Linux集群搭建+免密登录
  16. torch.masked_select和torch.masked_scatter
  17. Kubernetes 节点调度原理及调度策略
  18. VS2019登录不上
  19. Windows 下自定义某类型文件图标(例如.h5,.ipynb)
  20. 数据库笔记——Mysql、Oracle、Sqlserver || Redis、Memcached、mongoDB环境搭建

热门文章

  1. 无法访问硬盘提示此卷不包含可识别的文件系统的文件找回法子
  2. 新手入门手把手介绍svn服务器进行项目的导入与导出
  3. JS对象与JSON字符串之间的转换
  4. “玩伴女郎”lena(雷娜):计算机图像处理界的永恒微笑
  5. 通过onvif抓取海康摄像头图片,以及解决海康摄像头抓取图片需要验证问题,实现摄像头一段时间换一个地方的同时抓取一张图片。
  6. 一元稀疏多项式计算器 【 数据结构课设作业 】 带界面,无bug,可以直接运行
  7. http请求头相关解释
  8. Java:URL rewrite
  9. 数据挖掘分析之数据预处理
  10. 云栖大会“数据智能”分论坛:友盟+以数据中台之力,为企业增长赋能