小白白话技术之MYSQL索引

  这是一篇关于MYSQL索引技术的白话介绍篇,不知道直白的语言是否有助于你更容易理解MYSQL的索引技术。

  什么是索引,为什么要用索引,要回答这俩个问题,我们可以先提出MYSQL使用上有什么痛点,比如说MYSQL的性能,更具体举例的话,比如说MYSQL的查询性能,如何能更快的查询到需要的数据,就是MYSQL的索引要解决的问题。MYSQL的索引是一种数据结构,通过这种数据结构能够更快的实现数据查找,所以我们要尽可能的使用索引来提高我们查询的性能。下面这个图说明了MYSQL中索引的定位

  数据也就是指数据库里存储的数据,这些数据通过一定规则创建索引数据,当我们查询是会优先利用索引数据进行查找,为什么索引数据查找数据更快呢?这就是我们下面要解释的。

  前面我们说过索引是一种数据结构,那么索引数据就是利用这种数据结构对数据库的数据进行加工存储,从而使得索引数据具备对应数据结构的特点。比如B-TREE,哈希等。

  快速查找算法中,B-TREE和哈希适合特定场景的查询应用,索引MYSQL中有这俩种数据结构的索引,当然还有其他的。B-TREE创建时会按照顺序存储,这有利于快速查找。

  在说下怎么才能利用好索引,单独的列可以利用索引 ,如果把单独的列放到表达式中就无法利用到索引了;前缀列可以利用到索引;多个列创建组合索引时,要注意顺序,不同的顺序查询效率是不一样的。

  另外要说下聚合索引,聚合索引其实是数据的一种存储方式,比如在innodb中,是把索引和数据一起保存起来。需要注意的是,一个表中只能有一个聚合索引,因为数据只能存储一份。再说下覆盖索引,如果一个索引把查询字段也覆盖,那么这个索引可以称为覆盖索引,如果覆盖索引可以把数据之间查询到,就可以避免访问表,那么可以极大提高性能,但是mysql中只有b-tree索引支持覆盖索引。

  那么索引就一定好吗,索引也有弊端,比如说创建索引需要时间,对于很小的表来说,直接全表扫描就可以了,完全没有必要。对于超级大的表,索引太大导致对性能的影响太大而降低性能,也不建议用索引。所以只有适当数据量的表考虑索引,当然我们有很多表其实也会太大或太小。索引还有 弊端吗,有,那就是对insert\delete\update会有性能的影响。

原文地址:https://www.cnblogs.com/xiaobaishouzha/p/12391239.html

时间: 2024-08-30 15:45:35

小白白话技术之MYSQL索引的相关文章

小白白话技术之MYSQL的复制机制的介绍

这是一篇关于MYSQL复制机制的一些思路白话介绍篇,希望直白的语言有助于你更容易理解MYSQL的复制机制.对于一个中间件,我们有很多要考虑的,比如希望可以提供水平扩展能力能够集群部署. Mysql是怎么设计解决这些问题呢?答案首先是复制,Mysql提供了一种复制机制,让多个Mysql可以实现数据同步. Mysql是如何实现数据同步的呢?首先主库会有记录二进制日志,这些日志记录了Mysql发生的事情,通过网络将这些数据同步给目标库,目标接收到二进制日志可以重放这些二进制日志,从而达到和主库同步的数

Mysql技术内幕——表&索引算法和锁

表 4.1.innodb存储引擎表类型 innodb表类似oracle的IOT表(索引聚集表-indexorganized table),在innodb表中每张表都会有一个主键,如果在创建表时没有显示的定义主键则innodb如按照如下方式选择或者创建主键.首先表中是否有唯一非空索引(unique not null),如果有则该列即为主键.不符合上述条件,innodb存储引擎会自动创建一个6字节大小的指针,rowid(). 4.2.innodb逻辑存储结构 innodb的逻辑存储单元由大到小分别是

MySQL索引原理及慢查询优化-来自美团网的技术blog(写的深入浅出)

MySQL索引原理及慢查询优化 转:http://tech.meituan.com/mysql-index.html MySQL凭借着出色的性能.低廉的成本.丰富的资源,已经成为绝大多数互联网公司的首选关系型数据库.虽然性能出色,但所谓“好马配好鞍”,如何能够更好的使用它,已经成为开发工程师的必修课,我们经常会从职位描述上看到诸如“精通MySQL”.“SQL语句优化”.“了解数据库原理”等要求.我们知道一般的应用系统,读写比例在10:1左右,而且插入操作和一般的更新操作很少出现性能问题,遇到最多

【MySQL】MySQL中针对大数据量常用技术_创建索引+缓存配置+分库分表+子查询优化(转载)

原文地址:http://blog.csdn.net/zwan0518/article/details/11972853 目录(?)[-] 一查询优化 1创建索引 2缓存的配置 3slow_query_log分析 4分库分表 5子查询优化 二数据转移 21插入数据 如今随着互联网的发展,数据的量级也是撑指数的增长,从GB到TB到PB.对数据的各种操作也是愈加的困难,传统的关系性数据库已经无法满足快速查询与插入数据的需求.这个时候NoSQL的出现暂时解决了这一危机.它通过降低数据的安全性,减少对事务

Mysql 索引原理(转自:张洋)

摘要 本文以MySQL数据库为 研究对象,讨论与数据库索引相关的一些话题.特别需要说明的是,MySQL支持诸多存储引擎,而各种存储引擎对索引的支持也各不相同,因此MySQL数据 库支持多种索引类型,如BTree索引,哈希索引,全文索引等等.为了避免混乱,本文将只关注于BTree索引,因为这是平常使用MySQL时主要打交道 的索引,至于哈希索引和全文索引本文暂不讨论. 文章主要内容分为三个部分. 第一部分主要从数据结构及算法理论层面讨论MySQL数据库索引的数理基础. 第二部分结合MySQL数据库

MySQL索引背后的数据结构及算法原理

摘要 本文以MySQL数据库为研究对象,讨论与数据库索引相关的一些话题.特别需要说明的是,MySQL支持诸多存储引擎,而各种存储引擎 对索引的支持也各不相同,因此MySQL数据库支持多种索引类型,如BTree索引,哈希索引,全文索引等等.为了避免混乱,本文将只关注于BTree索 引,因为这是平常使用MySQL时主要打交道的索引,至于哈希索引和全文索引本文暂不讨论. 数据结构及算法基础 索引的本质 MySQL官方对索引的定义为:索引(Index)是帮助MySQL高效获取数据的数据结构.提取句子主干

MySQL索引与索引优化

说起提高数据库性能,索引是最物美价廉的东西了.不用加内存,不用改程序,不用调sql,只要执行个正确的’create index’,查询速度就可能提高百倍千倍,这可真有诱惑力.可是天下没有免费的午餐,查询速度的提高是以插入.更新.删除的速度为代价的,这些写操作,增加了大量的I/O. MySQL的索引种类 Mysql索引包含:普通索引.主键索引.唯一索引.全文索引,为了适应不同的查询.数据结构,提高查询速度,选择合适的索引方式. 1.普通索引 这是最基本的索引,它没有任何限制. 普通索引的创建方式:

浅谈MySQL索引背后的数据结构及算法

摘要 本文以MySQL数据库为研究对象,讨论与数据库索引相关的一些话题.特别需要说明的是,MySQL支持诸多存储引擎,而各种存储引擎对索引的支持 也各不相同,因此MySQL数据库支持多种索引类型,如BTree索引,哈希索引,全文索引等等.为了避免混乱,本文将只关注于BTree索引,因为这是 平常使用MySQL时主要打交道的索引,至于哈希索引和全文索引本文暂不讨论. 文章主要内容分为四个部分. 第一部分主要从数据结构及算法理论层面讨论MySQL数据库索引的数理基础. 第二部分结合MySQL数据库中

MySql索引原理与使用大全

林炳文Evankaka原创作品.转载请注明出处http://blog.csdn.net/evankaka 一.索引介绍 索引是对数据库表中一列或多列的值进行排序的一种结构.在关系数据库中,索引是一种与表有关的数据库结构,它可以使对应于表的SQL语句执行得更快.索引的作用相当于图书的目录,可以根据目录中的页码快速找到所需的内容.当表中有大量记录时,若要对表进行查询,第一种搜索信息方式是全表搜索,是将所有记录一一取出,和查询条件进行一一对比,然后返回满足条件的记录,这样做会消耗大量数据库系统时间,并