MySQL(7)— 索引
七、索引
MySQL官方对索引的定义为:索引(Index)是帮助 MySQL 高效 获取数据的数据结构。
7-1、索引的分类
- 主键索引 (primary key)
- 唯一的标识,主键不可重复,只能有一个列作为主键
- 唯一索引(unique key)
- 唯一索引的 "唯一" 是指为列唯一,而唯一索引可重复
- 常规索引 (key / index)
- 默认的索引,关键字 key / index 设置
- 全文索引 (FullText)
- 在很大数据量才会使用,快速定位数据
基础语法
-- 索引的添加
-- 1、在创建表的时候用关键字声明
-- 2、创建后,用 ALTER/CREATE 进行添加
-- 显示 表A 所有的索引信息
show index from 表A
-- 增加一个全文索引: (索引名) 列名
alter table 表 add fulltext index `aaa` (`aaa`)
-- explain 分析sql的执行状况, 在语句的最前方加上即可
7-2、索引的测试
-- 创建索引前:(在100W条数据中查询某行记录)
SELECT * FROM app_user WHERE `name` = '用户99999' -- 执行耗时 : 0.566 sec
SELECT * FROM app_user WHERE `name` = '用户99999' -- 执行耗时 : 0.564 sec
SELECT * FROM app_user WHERE `id` = 99999 -- 执行耗时 : 0 sec 主键索引
-- 创建索引后:(在100W条数据中查询某行记录)
-- 索引命名规范: id_表名_字段名
CREATE INDEX id_app_user_name ON app_user (`name`) -- 执行耗时 : 11.511 sec
EXPLAIN SELECT * FROM app_user WHERE `name` = '用户999989' -- 执行耗时 : 0 sec
创建索引前:(在100W条数据中查询某行记录)执行耗时 : 0.563 sec

EXPLAIN 关键字显示 sql 执行情况:

======================================================================================================================================================================
创建索引后:(在100W条数据中查询某行记录)几乎不用时间

EXPLAIN 关键字显示 sql 执行情况:

总结:索引在数据量小的时候,区别不大;但在大数据的时候,查询效率提升明显!
7-3、索引的使用
- 索引不是越多越好
- 不要对经常变动的数据加索引
- 小数据量的表不需要加索引
- 应该加在常用来 查询 的字段上
MySQL(7)— 索引的更多相关文章
- 【夯实Mysql基础】MySQL性能优化的21个最佳实践 和 mysql使用索引
本文地址 分享提纲: 1.为查询缓存优化你的查询 2. EXPLAIN 你的 SELECT 查询 3. 当只要一行数据时使用 LIMIT 1 4. 为搜索字段建索引 5. 在Join表的时候使用相当类 ...
- MySQL中索引和优化的用法总结
1.什么是数据库中的索引?索引有什么作用? 引入索引的目的是为了加快查询速度.如果数据量很大,大的查询要从硬盘加载数据到内存当中. 2.InnoDB中的索引原理是怎么样的? InnoDB是Mysql的 ...
- MySQL 联合索引详解
MySQL 联合索引详解 联合索引又叫复合索引.对于复合索引:Mysql从左到右的使用索引中的字段,一个查询可以只使用索引中的一部份,但只能是最左侧部分.例如索引是key index (a,b,c ...
- Mysql复合索引
当Mysql使用索引字段作为条件时,如果该索引是复合索引,必须使用该索引中的第一个字段作为条件才能保证系统使用该索引,否则该索引不会被使用,并且应尽可能地让索引顺序和字段顺序一致
- 如何正确建立MYSQL数据库索引
索引是快速搜索的关键.MySQL索引的建立对于MySQL的高效运行是很重要的.下面介绍几种常见的MySQL索引类型. 在数据库表中,对字段建立索引可以大大提高查询速度.假如我们创建了一个 mytabl ...
- mysql高性能索引策略
转载说明:http://www.nyankosama.com/2014/12/19/high-performance-index/ 1. 引言 随着互联网时代地到来,各种各样的基于互联网的应用和服务进 ...
- MySQL创建索引语法
1.介绍: 所有mysql索引列类型都可以被索引,对来相关类使用索引可以提高select查询性能,根据mysql索引数,可以是最大索引与最小索引,每种存储引擎对每个表的至少支持16的索引.总索引长度为 ...
- mysql使用索引优化查询效率
索引的概念 索引是一种特殊的文件(InnoDB数据表上的索引是表空间的一个组成部分),它们包含着对数据表里所有记录的引用指针.更通俗的说,数据库索引好比是一本书前面的目录,能加快数据库的查询速度.在没 ...
- Mysql中索引的 创建,查看,删除,修改
创建索引 MySQL创建索引的语法如下: ? 1 2 3 CREATE [UNIQUE|FULLTEXT|SPATIAL] INDEX index_name [USING index_type] ON ...
- mysql 联合索引(转)
http://blog.csdn.net/lmh12506/article/details/8879916 mysql 联合索引详解 联合索引又叫复合索引.对于复合索引:Mysql从左到右的使用索引中 ...
随机推荐
- CSAPP Chapter 8:Exception Control Flow
prcesssor在运行时,假设program counter的值为a0, a1, ... , an-1,每个ak表示相对应的instruction的地址.从ak到ak+1的变化被称为control ...
- unix域源码解析
首先我们先要创建一个用于通信的结构unix_proto_data ,并初始化某些字段 static int unix_proto_create(struct socket *sock, int pro ...
- vscode快捷替换json格式
i=json from=AUTO to=AUTO smartresult=dict client=fanyideskweb salt=1537359261311 sign=06b7d1398ebdc6 ...
- Pattern Matching
字符串模式匹配,即子串的定位操作.就是判断主串S中是否存在给定的子串,如果存在,那么返回子串在S中的位置,否则返回0. 实现这种操作有两种算法: 朴素的模式匹配算法 设主串S长度为n,子串T长度为m. ...
- 聊聊算法——BFS和DFS
如果面试字节跳动和腾讯,上来就是先撕算法,阿里就是会突然给你电话,而且不太在意是周末还是深夜, 别问我怎么知道的,想确认的可以亲自去试试.说到算法,直接力扣hard三百题也是可以的,但似乎会比较伤脑, ...
- vue.prototype和vue.use的区别和注意点
1.vue.prototype:实例上挂载属性/方法,例如Vue.prototype.axios = axios; 2.vue.use:引入插件,例如vuex,vue.use(vuex)如图,vue. ...
- 利用vue-cli + vant搭建一个移动端开发模板
本文系原创,转载请附带作者信息.项目地址: https://github.com/momozjm/vant-project.git 前言 在项目开发过程中,一个新的项目需要我们从零开始搭建框架,这个时 ...
- jQuery的相关尺寸获取 - 学习笔记
获取元素相对于文档的偏移量 获取当前元素相对于父级元素的偏移量 获取文档滚动距离 获取元素的宽度和高度 设置元素的宽度和高度 获取可视区域的宽度和高度 获取文档的宽度和高度 获取元素相对于文档的偏移量 ...
- layui里面的layer模块弹窗,强制居中的方法!!!
每次调用layer弹窗做动态展示的时候,只要内容不固定或者需要二次渲染 比如layui.form.render()进行渲染的时候 由于弹窗已经出来了,只是content部分的结构改变了宽度或者高度,l ...
- hive元数据报错?试了很多方法都没辙?也许你漏了这一步
进入hiveCLI后,输入show databases; 显示 FAILED: SemanticException org.apache.hadoop.hive.ql.metadata.HiveExc ...