索引:是一种数据结构,以增加存储开销和减慢DML(增、删、改)操作来提高查询速度。

常见的索引结构:btree索引(myisam,innodb,memory,heap),hash索引(memory,heap)。

常见的索引包括:主键索引、唯一索引、普通索引、全文索引

注意:查询一次后会将这次的查询结果缓存起来,若下次再查询则直接取结果

一、创建索引:

1、主键索引:每个表最多只能有一个主键。主键可以标识一行记录,因为不同行的主键字段值是不能相同的

1.1、建表时创建:

(1)在字段声明时创建

(2)在声明完字段类型后创建

1.2、建表后创建

2、唯一索引:值唯一的字段可以设置为唯一索引,允许插入空值,但不能是空串

2.1、建表时创建:

(1)在字段声明时创建

(2)在声明完字段类型后创建

2.2、建表后创建

或者

3、普通索引:

创建方法

或者

4、全文索引:

4.1、建表时创建

4.2、建表后创建

总结:

(1)这四种索引都可以利用alter table在建表后创建

(2)除了主键和全文索引外,都可以用create创建

(3)主键、全文索引和唯一索引可以在建表时创建。

二、删除索引:

删除普通索引、全文索引和唯一索引

删除主键

三、修改索引:

先删除索引再创建索引

四、索引使用注意事项:

1、全文索引的使用:

(1)只有myisam存储引擎才能使用全文索引

(2)全文索引只针对英文有效

(3)停止词:在英语里面会遇到很多a,the,or等使用频率很多的字或词。如果要将这些词都索引的话,工作量巨大。所以仅对出现不那么频繁的单词加索引,如‘he’是常用词,不加索引。

(4)使用方法:match(字段列表) against ('关键词')

(5)匹配度:match(字段列表)
against ('关键词')返回的是各个字段对关键词的匹配度

(6)使用like时,若以“%”或者‘_’的开头的模糊查询,索引不生效。(%匹配任意个字符,_匹配但个字符)

举例说明:

新建一张表

插入数据,数据的部分截图如下

看一下各个行匹配单词‘pollution’的匹配度

再看一下对停止词的匹配度,这里匹配‘in’。第一行中有‘in’但匹配度依然为0。可见全文索引忽略停止词,即忽略出现频率高的词汇。

2、什么字段该加索引:

(1)查询频繁的字段

(2)唯一性强的字段

(3)更新不频繁的字段

3、使用or时索引不生效

五、用explain优化索引

explain 可以帮助我们分析 select 语句,让我们知道查询效率低下的原因,从而改进我们的查询

对之前的全文索引test库做测试

id:查询序列号。表示查询中执行 select 子句或操作表的顺序,id 值越大优先级越高,越先被执行。id 相同,执行顺序由上至下。 

select_type:查询类型

table:输出行所引用的表

possible_keys:指出 MySQL 能在该表中使用哪些索引有助于查询。如果为空,说明没有可用的索引  

key:MySQL 实际从 possible_key 选择使用的索引。

key_len:使用的索引的长度。在不损失精确性的情况下,长度越短越好 

ref:显示索引的哪一列被使用了 

rows:MYSQL 认为必须检查的用来返回请求数据的d行数

mysql---索引及explain的作用的更多相关文章

  1. MySQL索引及Explain及常见优化

    MySQL索引设计的原则 1. 搜索的索引列,不一定是所要选择的列.换句话说,最适合索引的列是出现在WHERE 子句中的列,或连接子句中指定的列,而不是出现在SELECT 关键字后的选择列表中的列. ...

  2. 一本彻底搞懂MySQL索引优化EXPLAIN百科全书

    1.MySQL逻辑架构 日常在CURD的过程中,都避免不了跟数据库打交道,大多数业务都离不开数据库表的设计和SQL的编写,那如何让你编写的SQL语句性能更优呢? 先来整体看下MySQL逻辑架构图: M ...

  3. Mysql索引、explain执行计划

    1.索引的使用场景 哪些情况使用索引: 1.主键自动建立唯一索引 2.频繁作为查询条件的字段应该创建索引 where 3.多表关联查询中,关联字段应该创建索引on两边都要创建索引 select * f ...

  4. MySQL索引的用处

    MySQL索引在MySQL数据库中,可以有效提高查询的效率,尤其是查询数据量非常大时,效果更为明显,往往能使查询速度加快成千上万倍. MySQL索引是很重要的概念,应用的范围非常广.那么,MySQL索 ...

  5. Mysql 学习之EXPLAIN作用

    一.MYSQL的索引 索引(Index):帮助Mysql高效获取数据的一种数据结构.用于提高查找效率,可以比作字典.可以简单理解为排好序的快速查找的数据结构.索引的作用:便于查询和排序(所以添加索引会 ...

  6. MySQL索引优化,explain详细讲解

    前言:这篇文章主要讲 explain 如何使用,还有 explain 各种参数概念,之后会讲优化 一.Explain 用法 模拟Mysql优化器是如何执行SQL查询语句的,从而知道Mysql是如何处理 ...

  7. MYSQL索引的作用和创建

    索引是查询优化最主要的方式: 查询方式: 一种是:全表扫描: 一种是:利用数据表上建立的所以进行扫描. 如:对表中name字段建立索引:则按照表中name字段进行索引排序,并为其建立指向数据表中记录所 ...

  8. 深入MySQL索引

    MySQL索引作为数据库优化的常用手段之一在项目优化中经常会被用到, 但是如何建立高效索引,有效的使用索引以及索引优化的背后到底是什么原理?这次我们深入数据库索引,从索引的数据结构开始说起. 索引原理 ...

  9. MYSQL索引结构原理、性能分析与优化

    [转]MYSQL索引结构原理.性能分析与优化 第一部分:基础知识 索引 官方介绍索引是帮助MySQL高效获取数据的数据结构.笔者理解索引相当于一本书的目录,通过目录就知道要的资料在哪里, 不用一页一页 ...

  10. MySQL索引的缺点以及MySQL索引在实际操作中有哪些事项

    以下的文章主要介绍的是MySQL索引的缺点以及MySQL索引在实际操作中有哪些事项是值得我们大家注意的,我们大家可能不知道过多的对索引进行使用将会造成滥用.因此MySQL索引也会有它的缺点: 虽然索引 ...

随机推荐

  1. tableview 上拉时 标题行出现在顶部不动效果

    类似这种效果: 其实很简单,利用tableview 的plain属性,然后使用section,其实滑上去不动的是  section的headView. -(NSInteger)numberOfSect ...

  2. MYSQL BLOB 字段大小以及个数的限制測试。

    測试结论 mysql版本号 5.1     表类型: innodb, row_format=compact (这是默认的行格式)     插入超过10个blob, blob的数据量非常小(<76 ...

  3. 获取windows版本信息

    procedure TForm1.Button1Click(Sender: TObject); Var     OSVI:OSVERSIONINFO; begin     OSVI.dwOSversi ...

  4. powershell 查看程序的tcp网络连接

    在运维工作中,常常查看某个业务的网络连接状况,在这里借用netstat来实现查找连接.用hash特性避免反复. $add=@{} while(1){ ps|?{$_.path -match 'E:\\ ...

  5. [AngularJS] Introduction to angular-formly

    <!DOCTYPE html> <html> <head> <!-- Each of these scripts are the latest version ...

  6. Google, FaceBook, Amazon 加州求职记 (转)

    http://blog.csdn.net/ithomer/article/details/8774006 http://www.myvisajobs.com 一年多前,出于显而易见的原因,下定决心肉身 ...

  7. DHCP服务自动分配IP地址原理

    转载自:http://blog.csdn.net/lycb_gz/article/details/8499559 DHCP在提供服务时,DHCP客户端是以UDP 68号端口进行数据传输的,而DHCP服 ...

  8. RecyclerView, ListView 只显示一行内容 问题解决

    Adapter 中的data有多行,但是RecyclerView只显示一行. 原因出在item的layout xml, 用了自动生成的RelativeLayout, 她的默认高度height属性是ma ...

  9. Javascript中new

    // 加不加new结果都一样 var obj = new Function('var temp = 100;this.temp = 200;return temp + this.temp;'); al ...

  10. 关于Socket通讯原理

    通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄. 在Internet上的主机一般运行了多个服务软件,同时提供几种服务. 每种服务都打开一个Socket,并绑定到一 ...