文档章节

MYSQL索引

关元
 关元
发布于 2018/12/18 22:58
字数 569
阅读 21
收藏 0

索引的作用

  • 索引类似书籍目录,查找数据,先查找目录定位页码,翻开页码获取数据

性能影响

  • 索引能大大减少查询数据时需要扫描的数据量,提高查询速度,
  • 避免排序和使用临时表
  • 将随机I/O变顺序I/O
  • 负面影响,降低写速度,占用磁盘

使用场景

  • 小表,全盘扫描效率更高
  • 中大型表,索引作用很大
  • 特大型表,建立和使用索引的代价将随之增大,可采用分区技术

索引类型

  • 普通索引,最基本索引,无约束
  • 唯一索引,具有唯一性约束,
  • 主键索引,特殊唯一索引.不允许空值,可以与外键构成参照完整性约束
  • 组合索引,多列组合在一起创建索引
  • 外键索引,仅INNODB使用,保证数据的一致性,完整性,实现级联操作
  • 全文索引,仅MYISAM使用,且只能针对英文

创建原则

  • 适合索引的列是where和join的on中用到的列
  • 索引列的基数越大,效果越好
  • 对字符串索引,应该制定一个前缀长度,可以节省索引空间
  • 根据需要创建复合索引
  • 避免创建过多索引
  • 主键尽量选择较短的数据类型,减少磁盘占用,提高查询效率

注意事项

  • 复合索引遵循前缀原则
  •  like查询,%不能在前,可以考虑全文索引
  • column is null 可以使用索引
  • 如果mysql估计使用索引比全表扫描更慢,会弃用索引
  • 如果or前的条件中的列有索引,后面的没有,索引不会被用到
  • 列是字符串类型,查询时需要给值加上引号代表字符串类型,否则索引无效

 

© 著作权归作者所有

共有 人打赏支持
下一篇: MYSQL事务处理
关元
粉丝 0
博文 30
码字总数 6501
作品 0
北海
私信 提问
MySQL 索引选择原则分析(二)

2:MySQL索引选择规则(唯一索引查询) studentsorigin表中只有主键,没有建立索引。 select id, name from studentsorigin; 根据MySQL 索引选择原则分析(一)2.1来分析,所以只能是全表扫描...

tara_qri
2015/10/14
24
0
SQL基础-DDL数据定义语言

SQL数据定义语言-DDL语句 DDL语句部分使我们有能力创建或删除表格。我们也可以定义索引(键),规定表之间的链接,以及施加表间的约束。 语句 释义 CREATE DATABASE 创建新数据库 ALTER DATA...

ZHAO_JH
2018/08/10
0
0
MySQL专题9之MySQL索引、MySQL临时表、MySQL复制表

1、MySQL索引 - MySQL索引的建立对于MySQL的高效运行是很重要的,索引可以大大提高MySQL的检索速度。 - 打个比方,如果合理的设计并使用索引的MySQL是一辆兰博基尼的话,那么没有设计和使用索...

极客微信条
2017/11/19
0
0
MySQL单列索引和组合索引的区别介绍

MySQL单列索引是我们使用MySQL数据库中经常会见到的,MySQL单列索引和组合索引的区别可能有很多人还不是十分的了解,下面就为您分析两者的主要区别,供您参考学习。 为了形象地对比两者,再建...

BearCatYN
2015/07/10
166
0
Mysql索引介绍及常见索引(主键索引、唯一索引、普通索引、全文索引、组合索引)的区别

Mysql索引概念: 说说Mysql索引,看到一个很少比如:索引就好比一本书的目录,它会让你更快的找到内容,显然目录(索引)并不是越多越好,假如这本书1000页,有500也是目录,它当然效率低,目...

zhdan
2016/05/26
196
0

没有更多内容

加载失败,请刷新页面

加载更多

Django进阶 1.1 ORM基础—ORM 1.2.1 增删改查之查询 1.2.2 删改增 (1) 1.2.3 删改增 (2)

ORM基础 ORM是Django操作数据库的API,Django的作者将sql语句封装在里面供我们使用。 我们前面还提到过Django提供一个模拟数据库的工具,sqlite,供我们学习测试使用。 如果我们想使用mysql...

隐匿的蚂蚁
42分钟前
1
0
Windows 上安装 Scala

在安装 Scala 之前需要先安装 Java 环境,具体安装的详细方法就不在这里描述了。 您可以自行搜索我们网站中的内容获得其他网站的帮助来获得如何安装 Java 环境的方法。 接下来,我们可以从 ...

honeymose
今天
1
0
数据库篇多表操作

第1章 多表操作 实际开发中,一个项目通常需要很多张表才能完成。例如:一个商城项目就需要分类表(category)、商品表(products)、订单表(orders)等多张表。且这些表的数据之间存在一定的关系...

stars永恒
今天
3
0
nginx日志自动切割

1.日志配置(Nginx 日志) access.log----记录哪些用户,哪些页面以及用户浏览器,IP等访问信息;error.log------记录服务器错误的日志 #配置日志存储路径:location / {      a...

em_aaron
昨天
5
0
java 反射

基本概念 RTTI,即Run-Time Type Identification,运行时类型识别。RTTI能在运行时就能够自动识别每个编译时已知的类型。   要想理解反射的原理,首先要了解什么是类型信息。Java让我们在运...

细节探索者
昨天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部