MySql索引基本
1.什么是索引
索引用于快速找出在某个列中有一特定值的行。如果不使用索引,需要遍历整张表,表越大查询耗时越大;
MySQL中的索引的存储类型有两种:BTREE、HASH。具体实现机制参照另一篇博客;
2.索引的优缺点分析和使用原则
优点:
- 任意字段可以设置索引
- 索引可以大大加快查询
缺点:
- 创建、维护索引需要额外耗时,并且耗时随数据量明显增加
- 索引需要占据空间,导致提前达到数据最大上线值
- 数据增、删、改需要维护索引,维护速度降低
使用原则:
1. 更新频繁的表应该避免过度索引,对查询频繁的字段应该创建索引;
2. 数据量小的表不需要索引;
3. 不同值少的列上(字段上)不要建立索引,例如学生表的"性别"字段上只有男,女两个不同值,无需设置索引;
3.索引分类
索引是在存储引擎中实现的,也就是说不同的存储引擎,会使用不同的索引;
MyISAM和InnoDB存储引擎:只支持BTREE索引
MEMORY/HEAP存储引擎:支持HASH和BTREE索引
索引分类 | 定义 | 说明 |
单列索引 |
普通索引:字段没限制,允许在定义索引列中插入重复值、空值; 唯一索引:索引列中的值必须是唯一的,但允许为空值; 主键索引:索引列值必须唯一,不允许为空 |
一个索引包含单列,但一张表可以有多个索引 |
组合索引 | 表中的多个字段组合上创建的索引 | 使用组合索引时遵循最左前缀集合 |
全文索引 | 在一堆数据中,通过某个关键字等,就能找到该字段所属的记录行 | MyISAM引擎上才能使用,只能在CHAR,VARCHAR,TEXT类型字段上使用全文索引 |
空间索引 | 空间索引是对空间数据类型的字段建立的索引, | MySQL中的空间数据类型有四种,GEOMETRY、POINT、LINESTRING、POLYGON |
参考:
https://www.cnblogs.com/whgk/p/6179612.html
https://blog.csdn.net/waeceo/article/details/78702584
MySql索引基本的更多相关文章
- 深入MySQL索引
MySQL索引作为数据库优化的常用手段之一在项目优化中经常会被用到, 但是如何建立高效索引,有效的使用索引以及索引优化的背后到底是什么原理?这次我们深入数据库索引,从索引的数据结构开始说起. 索引原理 ...
- MySQL 索引
MySQL索引的建立对于MySQL的高效运行是很重要的,索引可以大大提高MySQL的检索速度. 打个比方,如果合理的设计且使用索引的MySQL是一辆兰博基尼的话,那么没有设计和使用索引的MySQL就是 ...
- MYSQL索引结构原理、性能分析与优化
[转]MYSQL索引结构原理.性能分析与优化 第一部分:基础知识 索引 官方介绍索引是帮助MySQL高效获取数据的数据结构.笔者理解索引相当于一本书的目录,通过目录就知道要的资料在哪里, 不用一页一页 ...
- MySQL索引原理及慢查询优化
原文:http://tech.meituan.com/mysql-index.html 一个慢查询引发的思考 select count(*) from task where status=2 and ...
- 【转】MySQL索引背后的数据结构及算法原理
摘要 本文以MySQL数据库为研究对象,讨论与数据库索引相关的一些话题.特别需要说明的是,MySQL支持诸多存储引擎,而各种存储引擎对索引的支持也各不相同,因此MySQL数据库支持多种索引类型,如BT ...
- [转]MySQL索引背后的数据结构及算法原理
摘要 本文以MySQL数据库为研究对象,讨论与数据库索引相关的一些话题.特别需要说明的是,MySQL支持诸多存储引擎,而各种存储引擎对索引的支持也各不相同,因此MySQL数据库支持多种索引类型,如BT ...
- MySQL索引类型总结和使用技巧以及注意事项
索引是快速搜索的关键.MySQL索引的建立对于MySQL的高效运行是很重要的.下面介绍几种常见的MySQL索引类型 在数据库表中,对字段建立索引可以大大提高查询速度.假如我们创建了一个 mytable ...
- MySQL索引背后的数据结构及算法原理【转】
本文来自:张洋的MySQL索引背后的数据结构及算法原理 摘要 本文以MySQL数据库为研究对象,讨论与数据库索引相关的一些话题.特别需要说明的是,MySQL支持诸多存储引擎,而各种存储引擎对索引的支持 ...
- mysql索引总结----mysql 索引类型以及创建
文章归属:http://feiyan.info/16.html,我想自己去写了,但是发现此君总结的非常详细.直接搬过来了 关于MySQL索引的好处,如果正确合理设计并且使用索引的MySQL是一辆兰博基 ...
- Mysql 索引实现原理. 聚集索引, 非聚集索引
Mysql索引实现: B-tree,B是balance,一般用于数据库的索引.使用B-tree结构可以显著减少定位记录时所经历的中间过程,从而加快存取速度.而B+tree是B-tree的一个变种,My ...
随机推荐
- JavaScript的函数和对象介绍
一.JavaScript中的函数 1.函数的概述 JavaScript中的函数是一段可执行代码的合集,在需要执行的时候可以在方法名之后添加一对小括号执行方法.是一段可执行的字符串. 2.函数中隐藏的属 ...
- 基础语法-循环结构while
基础语法-循环结构while 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.while语句格式 while(条件表达式){ 执行语句; } 二.while语句案例 /** * ...
- Egret Engine 2D - 项目配置
todo 看三个示例项目的完整源码和资源 <e:Group name="Button" height = "300" verticalCent ...
- java向量 vector
Vector 向量 是java.util 包里的一个类,该类继承AbstractList,实现了类似动态数组的功能. 向量和数组相似,都可以保存一组数据,但数组的大小(长度)是固定的,而Vector ...
- cf 187B.AlgoRace
floyd...太神奇了(不会floyd(大雾)) 貌似floyd的外层k是保证最短路从起点逐渐向外扩展(而不是乱搞233) 所以在处理f[i][j]=min(f[i][j],f[i][k]+f[k] ...
- 详解contextConfigLocation|Spring启动过程详解(转)
原文链接:https://blog.csdn.net/qw222pzx/article/details/78191670 spring的应用初始化流程一直没有搞明白,刚刚又碰到了相关的问题.决定得好好 ...
- Transaction Managament(事务管理一、概念)
什么是事务 对于一个软件系统来说,我们需要相应的数据资源来保存体统状态.在对系统状态所依托的数据资源的时候,为了保证系统始终处于“正确”状态,我们必须对这些访问操作进行一些必要的限定.以保证系统状态的 ...
- HDU—4699 Editor 双向链表+子集和
惨.今天聪哥选了2013 多校10做训练,结果一题都没做出来.这个题目是数据结构,正好是我强项 如果只是插入 删除 光标左右移动,那都小菜,用链表全解决,关键是那个Q k 要求 a1到aq的连续子序列 ...
- 禁用 Bootstrap 模态框(Modal) 点击空白时自动关闭
在做项目的时候,来了这么一个需求,要求打开模态框后,点击空白的地方不让他自动关闭,只能点击关闭按钮才能关闭. 有了需求,就开始查找资料寻求解决的方法. 我找到的解决方法如下: $('#registCo ...
- 吴裕雄--天生自然C++语言学习笔记:C++ 变量类型
变量其实只不过是程序可操作的存储区的名称.C++ 中每个变量都有指定的类型,类型决定了变量存储的大小和布局,该范围内的值都可以存储在内存中,运算符可应用于变量上. 变量的名称可以由字母.数字和下划线字 ...