美文网首页
关于数据库索引的一些记录

关于数据库索引的一些记录

作者: 非甲即丁 | 来源:发表于2020-03-25 21:28 被阅读0次

一两千万数据的表慢查询如何加快?

  • 索引是帮助Mysql高效获取数据的排好序的数据结构

  • 索引数据结构

    1. 二叉树:左边元素比右边元素小,这样就进行了事先排序,但是如果元素是第增,那就会退化成为链表,如果查询是最大的那么就需要遍历所有元素,所以不可以。被排除。
    2. 红黑树:弱平衡二叉树,自动将树旋转,这样保证树不会退化成为链表,但是树的高度在数据量极大的时候依旧会很高。被排除。
    3. B-Tree:优化红黑树,每个节点放入多个数据
    4. B+树:数据都储存到叶子节点,非叶子节点用来存放索引,叶子节点会有冗余。(应用占比99%)
      image.png
      Mysql 节点默认大小大小设置为16K,一个索引大小为8B(bigInt类型)硬盘位置指针大小为6B那么一个节点就可以存储16KB/(8B+6B)即1170个子节点,如果树的高度为3,那么就可以存储117011702这么多的数据

    5.关于hash索引(有应用,但是应用较小)的问题:hash会有重复(但是mysql对此有优化,这不是主要原因),主要原因是范围查找会很慢(where col>6)

两种储存引擎(mysql表文件默认在安装目录的/data/文件夹下)

  • MyISAM:叶子节点索引和数据所在指针值组成,数据储存在另外的文件中,每个表都有3个文件,.MYI 索引文件,.MYD数据文件,.frm 表结构文件
  • InnoDB:叶子节点索引和数据组成,每个表都有2个文件,.MYID索引和数据数据文件,.frm 表结构文件,由于数据和索引放在一起,所以叫做聚集索引,并且为了组成B+树的数据结构,每张表必须有一个主键。

下图为InnoDB

image.png

相关文章

  • 数据库索引学习笔记

    数据库索引学习笔记 数据库索引优化是后台开发必备的技能,本文记录下学习数据库索引的一些心得。 MyISAM和Inn...

  • 关于数据库索引的一些记录

    一两千万数据的表慢查询如何加快? 索引是帮助Mysql高效获取数据的排好序的数据结构 索引数据结构二叉树:左边元素...

  • 数据库索引记录

    本文用来记录数据库索引相关内容; 1】数据库索引分为单列索引,组合索引,全文索引,空间索引 2】单列索引:只有一个...

  • mysql数据库索引的一些学习

    在项目编写的过程中,遇到了一些数据库查询优化的问题,所以找了一些关于索引的书看。现在把看完后的一些对数据库索引的理...

  • 为什么使用B+树作为索引结构

    概述 本文主要从参考 某博主关于索引的介绍,记录为什么选用B-+树进行索引,并且数据库设计者做了哪些巧妙的设计。 ...

  • 索引

    索引: 索引是一种特殊的数据库结构,可以用来快速查询数据库表中的特定记录。索引是提高数据库性能的重要方式。MySQ...

  • 对于Mysql索引的理解

    前言: 对于数据库中的索引,一个非常好的类比是把数据库索引看作是书的索引。如果你有一本关于狗的书,你想要找关于...

  • 关于sql优化的一些总结

    1、非索引优化 2、关于索引 3、数据库读写锁(共享锁、排它锁)

  • ES6 - 结构化数据操作

    知识点: 索引 = 数据库 类型 = 表 文档/文件 = 数据记录 1. 创建索引 ps:索引中的片区无法修改,可...

  • mysql基本操作命令汇总--笔记

    一、基本操作 对数据库以及表的一些基本操作 1-1.关于数据库 1-2.关于数据表 1-3表的约束 1-4索引 作...

网友评论

      本文标题:关于数据库索引的一些记录

      本文链接:https://www.haomeiwen.com/subject/ufjxuhtx.html