文档章节

mysql索引学习的总结记录

霖vv
 霖vv
发布于 2016/09/08 23:42
字数 523
阅读 11
收藏 0

 最近学习MYSQL,关于索引失效的情形总结如下:

  • 请求表上的数据行超出表总记录数30%,变成全表扫描
  • 谓词上的索引列上存在NULL值
  • 谓词上的索引列条件使用函数
  • 谓词上的索引列条件进行了相关运算
  • 谓词上的索引列条件上使用了<>,NOT IN操作符
  • 复合索引中,第一个索引列使用范围查询--只能用到部份或无法使用索引
  • 复合索引中,第一个查询条件不是最左索引列
  • 模糊查询条件列最左以通配符%开始
  • 内存表(HEAP表)使用HASH索引时,使用范围检索或者ORDER BY
  • 表关联字段类型不一样(包括某些长度不一样,但像varchar(10)与char(10)则可以,MYSQL经过内部优化处理)

 

索引类型(按用途非严格划分)

  • 普通索引,这是最基本的索引,无任何限制
  • 唯一索引,与普通索引类似,索引列值必须唯一,允许NULL值
  • 全文索引,基于词干方式创建索引,多用于BLOB数据类型
  • 单列索引,仅基于一列创建的索引
  • 多列索引,基于多列创建的索引,列顺序非常重要
  • 空间索引,用作地理数据存储
  • 主键索引,是一种特殊的唯一索引,不允许有NULL值,通常在建表时创建。

索引的优缺点

       索引的优点

  • 大大减少了服务器需要扫描的数据量
  • 可以帮助服务器避免排序或减少使用临时表排序
  • 索引可以随机I/O变为顺序I/O

 

       索引的缺点

  • 需要占用磁盘空间,因此冗余低效的索引将占用大量的磁盘空间
  • 降低DML性能,对于数据的任意增删改都需要调整对应的索引,甚至出现索引分裂
  • 索引会产生相应的碎片,产生维护开销

© 著作权归作者所有

霖vv

霖vv

粉丝 25
博文 193
码字总数 118270
作品 0
朝阳
程序员
私信 提问
MySQL学习总结----索引

MySQL学习总结----索引 ================================================================================= 一、索引 ================================================================......

doublelinux
2017/10/16
0
0
MySQL——通过EXPLAIN分析SQL的执行计划

在MySQL中,我们可以通过EXPLAIN命令获取MySQL如何执行SELECT语句的信息,包括在SELECT语句执行过程中表如何连接和连接的顺序。 下面分别对EXPLAIN命令结果的每一列进行说明: select_type:...

撸码那些事
2018/08/03
0
0
Innodb索引和锁的学习笔记

附录:前段时间学习了下innodb锁的相关知识,对锁和事务有了大体理解,这里做个小总结。 1.Innodb事务和锁的关系。 Innodb区别于MyISAM的两个特点就是Innodb对于事务的支持和对行锁的支持。事...

天天顺利
2015/09/18
138
0
SQL-SQL优化-索引

图文并茂详解 SQL JOIN Join 是关系型数据库系统的重要操作之一,一般关系型数据库中包含的常用 Join:内联接、外联接和交叉联接等。如果我们想在两个或以上的表获取其中从一个表中的行与另一...

掘金官方
2017/12/25
0
0
【揭秘】数据库面试葵花宝典,让你面试一次过

大家可以叫我老张,网名superZS!一直从事数据库行业10余年,工作于某数据库服务公司,兼数据库资深讲师,就面试中大家遇到的比较困惑的数据库问题,和刚进入数据库领域的同学们,我在这里给...

superZS
2017/07/18
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Eureka应用注册与集群数据同步源码解析

在之前的EurekaClient自动装配及启动流程解析一文中我们提到过,在构造DiscoveryClient类时,会把自身注册到服务端,本文就来分析一下这个注册流程 客户端发起注册 boolean register() t...

Java学习录
13分钟前
3
0
Java描述设计模式(15):责任链模式

本文源码:GitHub·点这里 || GitEE·点这里 一、生活场景描述 1、请假审批流程 公司常见的请假审批流程:请假天数 当 day<=3 天,项目经理审批当 3<day<=5 天,部门经理审批当 day>5 天...

知了一笑
24分钟前
3
0
总结:数组与链表

1、内存申请:数组在内存上是连续的空间;链表,内存地址上可以是不连续的。 2、查询速度:数组可以随机访问,链表必须顺序访问,即从首个元素开始遍历,逐个查找,所以数组查询很快。 3、写入...

浮躁的码农
32分钟前
3
0
HashMap源码分析

read

V丶zxw
51分钟前
5
0
Python字符串或JSON字符串转字典dict、列表list

有3种方法 1、使用ast模块 >>> import ast>>> s = '["test",1]'>>> ast.literal_eval(s)['test',1]>>> s = '{"test":1}'>>> ast.literal_eval(s){'test': 1} 2、eval函数,这个......

编程老陆
今天
7
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部