索引:是一种数据结构,以增加存储开销和减慢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. 免费开放的API

    1)新浪IP地址查询API接口 http://int.dpool.sina.com.cn/iplookup/iplookup.php?format=js&ip=IP地址 format有 js. ...

  2. 谈使用Eclipse与DDMS调试Android程序的方法

    在Eclipse开发工具中调试程序的方法很多,但是使用Eclipse调试Android程序时需要注意一些细节上的问题.许多刚接触 Android的开发者,在调试Android程序时总是不能迅速地找到程 ...

  3. JS之正则表达式验证URL

    function IsURL(str_url){ var strRegex = "^((https|http|ftp|rtsp|mms)?://)" + "?(([0-9 ...

  4. Jordan Lecture Note-7: Soft Margin SVM

    Soft Margin SVM  (1)Recall 之前分析到SVM的模型为: \begin{align}\mathop{\min}&\quad \frac{1}{2}w^\prime w\ ...

  5. linux中的工具

    远程连接linux的工具: 命令行: SecureCRT   putty  XShell(商业环境付费) 图形界面:WinSCP SecureFX 远程连接window服务器工具: FileZilla ...

  6. javascript笔记07:使用Object类为实例定义方法和属性

    function Person() {} Person.prototype = { nickName:"john", , showInfo:function() { return ...

  7. 有效范围为request的bean

    Car.java类 package tom.jiafei; public class Car { String carnumber; String name; String date; public ...

  8. Failed to create java virtue machine(不能创建java虚拟机)

    今天开发模块时,遇到这个问题,本来是版本的问题,jdk1.6的版本有点低,与cxf框架不兼容,需要用到jdk1.7,结果安装了jdk1.7之后,客户方要求必须用jdk1.6,要统一,所以卸载jdk1. ...

  9. ppss

    parallel processing shell script Oct 19 Q: how to schedule multi-cpus on each event?

  10. 信号量 Semaphore

    一.简介         信号量(Semaphore),有时被称为信号灯,是在多线程环境下使用,负责协调各个线程, 以保证它们能够正确.合理的使用公共资源. Semaphore可以控制某个资源可被同时 ...