mysql---索引及explain的作用
索引:是一种数据结构,以增加存储开销和减慢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的作用的更多相关文章
- MySQL索引及Explain及常见优化
MySQL索引设计的原则 1. 搜索的索引列,不一定是所要选择的列.换句话说,最适合索引的列是出现在WHERE 子句中的列,或连接子句中指定的列,而不是出现在SELECT 关键字后的选择列表中的列. ...
- 一本彻底搞懂MySQL索引优化EXPLAIN百科全书
1.MySQL逻辑架构 日常在CURD的过程中,都避免不了跟数据库打交道,大多数业务都离不开数据库表的设计和SQL的编写,那如何让你编写的SQL语句性能更优呢? 先来整体看下MySQL逻辑架构图: M ...
- Mysql索引、explain执行计划
1.索引的使用场景 哪些情况使用索引: 1.主键自动建立唯一索引 2.频繁作为查询条件的字段应该创建索引 where 3.多表关联查询中,关联字段应该创建索引on两边都要创建索引 select * f ...
- MySQL索引的用处
MySQL索引在MySQL数据库中,可以有效提高查询的效率,尤其是查询数据量非常大时,效果更为明显,往往能使查询速度加快成千上万倍. MySQL索引是很重要的概念,应用的范围非常广.那么,MySQL索 ...
- Mysql 学习之EXPLAIN作用
一.MYSQL的索引 索引(Index):帮助Mysql高效获取数据的一种数据结构.用于提高查找效率,可以比作字典.可以简单理解为排好序的快速查找的数据结构.索引的作用:便于查询和排序(所以添加索引会 ...
- MySQL索引优化,explain详细讲解
前言:这篇文章主要讲 explain 如何使用,还有 explain 各种参数概念,之后会讲优化 一.Explain 用法 模拟Mysql优化器是如何执行SQL查询语句的,从而知道Mysql是如何处理 ...
- MYSQL索引的作用和创建
索引是查询优化最主要的方式: 查询方式: 一种是:全表扫描: 一种是:利用数据表上建立的所以进行扫描. 如:对表中name字段建立索引:则按照表中name字段进行索引排序,并为其建立指向数据表中记录所 ...
- 深入MySQL索引
MySQL索引作为数据库优化的常用手段之一在项目优化中经常会被用到, 但是如何建立高效索引,有效的使用索引以及索引优化的背后到底是什么原理?这次我们深入数据库索引,从索引的数据结构开始说起. 索引原理 ...
- MYSQL索引结构原理、性能分析与优化
[转]MYSQL索引结构原理.性能分析与优化 第一部分:基础知识 索引 官方介绍索引是帮助MySQL高效获取数据的数据结构.笔者理解索引相当于一本书的目录,通过目录就知道要的资料在哪里, 不用一页一页 ...
- MySQL索引的缺点以及MySQL索引在实际操作中有哪些事项
以下的文章主要介绍的是MySQL索引的缺点以及MySQL索引在实际操作中有哪些事项是值得我们大家注意的,我们大家可能不知道过多的对索引进行使用将会造成滥用.因此MySQL索引也会有它的缺点: 虽然索引 ...
随机推荐
- tableview 上拉时 标题行出现在顶部不动效果
类似这种效果: 其实很简单,利用tableview 的plain属性,然后使用section,其实滑上去不动的是 section的headView. -(NSInteger)numberOfSect ...
- MYSQL BLOB 字段大小以及个数的限制測试。
測试结论 mysql版本号 5.1 表类型: innodb, row_format=compact (这是默认的行格式) 插入超过10个blob, blob的数据量非常小(<76 ...
- 获取windows版本信息
procedure TForm1.Button1Click(Sender: TObject); Var OSVI:OSVERSIONINFO; begin OSVI.dwOSversi ...
- powershell 查看程序的tcp网络连接
在运维工作中,常常查看某个业务的网络连接状况,在这里借用netstat来实现查找连接.用hash特性避免反复. $add=@{} while(1){ ps|?{$_.path -match 'E:\\ ...
- [AngularJS] Introduction to angular-formly
<!DOCTYPE html> <html> <head> <!-- Each of these scripts are the latest version ...
- Google, FaceBook, Amazon 加州求职记 (转)
http://blog.csdn.net/ithomer/article/details/8774006 http://www.myvisajobs.com 一年多前,出于显而易见的原因,下定决心肉身 ...
- DHCP服务自动分配IP地址原理
转载自:http://blog.csdn.net/lycb_gz/article/details/8499559 DHCP在提供服务时,DHCP客户端是以UDP 68号端口进行数据传输的,而DHCP服 ...
- RecyclerView, ListView 只显示一行内容 问题解决
Adapter 中的data有多行,但是RecyclerView只显示一行. 原因出在item的layout xml, 用了自动生成的RelativeLayout, 她的默认高度height属性是ma ...
- Javascript中new
// 加不加new结果都一样 var obj = new Function('var temp = 100;this.temp = 200;return temp + this.temp;'); al ...
- 关于Socket通讯原理
通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄. 在Internet上的主机一般运行了多个服务软件,同时提供几种服务. 每种服务都打开一个Socket,并绑定到一 ...