mysql索引小记
Mysql索引分为以下几类:FULLTEXT, HASH,BTREE,RTREE.
FULLTEXT:全文搜索索引
主要是解决'ad%'这样的查询效率低的问题,只能是MyISAM和InnoDB引擎上使用
HASH:哈希索引
哈希索引与B索引的区别
1:hash索引只能进行等值过虑,不能进行范围查询.这是因为hash索引是基于hash算法的
2:hash索引无法被用来避免数据的排序操作.
3:hash索引不能利用部分索引键进行查询.
4:hash索引无法避免对表的扫描.因为多个行会对应同一个hash值,所以定位到hash值之后要
对相应的表进行对比
5:当hash冲突比较多时,效率会下降.可能会比b索引还要低
BTREE:树索引
基于树结构的索引,会从根节点开始查询
索引使用时的一些注意事项
1.索引不会包涵有NULL值的列
如果一列中有NULL值,那么在创建复合索引的时候有NULL值的一列是会失效的
2.使用短索引
如果对字符类型的列进行创建索引的时候,最好指定长度.比较VARCHAR(20),如果列中的数据
在前10或20位就能确定唯一性,就没有必要对整个列进行索引.短索引可以提高查询效率,节省存储
空间和I/O操作
3.索引列排序
在一条查询语句中只会使用一条索引,如果where中使用了索引,那么order中将不会使用索引.
所以尽量避免没有必要的排序
4.like语句
尽量避免使用like语句.在like语句中%AD%或_ad,以%和_形头的查询是会让索引失效的
sdf%这样的不会使索引失效
5.不要在列上进行运算
6.不要使用not in和<>
直引虽然会提高查询效率,但是如果对表创建过多索引则会降低更新效率
mysql索引小记的更多相关文章
- MySQL索引基础知识点
什么是索引 索引类似于书本目录,是数据库存储引擎维护的用于快速查找到记录的一种数据结构,它是对查询性能优化的最有效手段. 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支持诸多存储引擎,而各种存储引擎对索引的支持 ...
随机推荐
- 剑指offer——面试题32.1:分行从上到下打印二叉树
void BFSLayer(BinaryTreeNode* pRoot) { if(pRoot==nullptr) return; queue<BinaryTreeNode*> pNode ...
- LINQ入门教程之各种标准查询操作符(一)
好久之前就想系统的学习下LINQ,好久之前…… 本篇文章主要介绍LINQ等的标准查询操作符,内容取自<LINQ高级编程>,后续还会介绍LINQ to XML ,LINQ to SQL. L ...
- Install Papirus Icon Theme on Ubuntu
sudo add-apt-repository ppa:papirus/papirus sudo apt update && sudo apt install papirus-icon ...
- VirtualBox虚拟机克隆方法
1.定位到Vritualbox的安装目录,不能用全路径的方式直接执行该命令行 2.执行Vboxmanage.exe clonevdi "d:\linux\source.vdi" & ...
- 使用go实现的lisp
去年10月份的时候,就有这个打算了. 也是在上个月左右,抽空弄出来了个go语言实现的lisp. 当然,不能和common lisp比,函数的数量是远远不如的,也不能自己定义类型/类,同时宏系统也非常简 ...
- JDK1.7新特性(2):异常和可变长参数处理
异常 jdk1.7对try--catch--finally的异常处理模式进行了增强,下面我们依次来看增强的方面. 1. 为了防止异常覆盖,给Throwable类增加了addSuppressed方法,可 ...
- RocketMQ异常
rocketMQ下载下来的时候,bin目录下有mqbroker.exe和mqnamesrv.exe两个可执行文件,双击执行都可以成功启动:
- 为什么会出现__pycache__文件夹?
为什么会出现__pycache__文件夹? python解释器会将 *.py 脚本文件进行编译,并将编译结果保存到__pycache__目录中. 下次再执行工程时,若解释器发现这个 *.py 脚本没有 ...
- HTML5--(3)过渡+动画+颜色+文本
一.过渡transition transition-property指定属性名称 (如width.height.background-color.内外边距) all 所有属性都将获得过渡效果(默认) ...
- 非常不错的js 屏蔽类加验证类
1 >屏蔽功能类 1.1 屏蔽键盘所有键 <script language="javascript"><!--function document.onkey ...