`

MySQL B+树索引及索引优化

 
阅读更多

    MySQL的索引实现由很多种实现,包括hash索引,B+索引,全文索引等,本文只讨论B+树索引。

为什么使用B+树索引?

1.评价一个索引好坏主要看IO的访问次数,B+树红黑树来说,树高很小(出度很大)即可以有效降低IO的访问次数。B+数的高度h=logd(n),d越大,h越小,查询效率越高。相对B树,B+树d可以很大,因为非叶子节点不存储数据,只存储key,在一个存储页上可以存储更多的key值。在每个页上可以存储更多的key,即d很大。

2.外存按照页进行逻辑划分,页大小固定,当读入外存数据时,会根据局部性原理每次会预读连续的多页数据到内存。B+树的叶子节点是存储是连续和有序的,在查询时,尤其在范围查询时较少的IO次数可以访问到所需的数据。

InnonDB引擎B+树索引是怎么实现的?

1.InnoDB使用聚集索引,数据根据主索引存储在叶子节点上,辅助索引的data域存储主键,索引innodb必须具有主键,并且主键是最好是单调递增的,主键的长度不要过长,负责会浪费空间。myisam使用非聚集索引,即主索引(B+树)的叶子节点存储数据的地址,索引myisam可以没有主键,数据也不是存储在B+主索引的叶子节点上的。

 

怎样选择索引怎样优化索引?

1.索引遵循最左性原理,例如联合索引是有序的(a,b,c),在查询时查询条件是a,ab,abc的精确匹配,都会使用索引,但是如下情况不能使用索引。

1.1 如果不是连续的例如ac,不会使用索引,不过b可以使用in的方式构造索引条件,当然也可以增加ac辅助索引;

1.2 b,c单独精确查询都不会用到索引;

1.3 使用like语句,通配符不在开头可以使用索引;

1.4 范围列查询只能使用第一个列索引,但是有时between and 等多值匹配可以使用索引;

1.5 使用函数或者表达式对列查询,不会使用索引;

2.索引选择性

数据表大于2000建立索引;选择性低即区分度不大的列不适合索引;可以截取前缀作为索引,减少索引长度;一定使用一个自增的字段作为索引。

性能优化常用工具有哪些?

1.使用explain 和show profiles;可以查看索引使用情况和执行效率。explain使用方法和数据含义查看下列文章。

http://database.51cto.com/art/200912/168453.htm

分享到:
评论

相关推荐

    索引介绍聚集索引和非聚集索引

    索引通过创建一种数据结构(例如B树)来实现这一点,这种结构允许数据库管理系统能够快速定位到数据所在的物理位置。 #### 二、B+树结构 B+树是一种自平衡的树数据结构,常用于数据库索引。B+树的特点在于所有的...

    鲁班学院MySQL课堂笔记(B+树索引,事务,锁)

    鲁班学院的这份课堂笔记深入浅出地探讨了MySQL中的核心概念:B+树索引、事务处理以及锁定机制。 一、InnoDB行格式、数据页结构以及索引底层原理分析 InnoDB是MySQL中最常用的存储引擎,它支持事务处理和行级锁定。...

    68 索引的页存储物理结构,是如何用B+树来实现的?l.pdf

    最后,随着数据库技术的不断演进,B+树索引也经历了各种优化和改进,例如,InnoDB存储引擎通过聚集索引和辅助索引(二级索引)进一步优化了数据存储和检索过程。理解这些基础知识可以帮助数据库管理员更好地管理和...

    mysql mysql索引B+树 mysql面试题知识点

    ### MySQL - 索引(B+树) #### B+ Tree 原理 **1. 数据结构** B Tree(Balance Tree,即平衡树)是一种特殊的查找树,所有的叶子节点都位于同一层。B+ Tree 是一种特殊的 B Tree,它不仅保留了平衡树的特性,还...

    MyISAM和InnoDB索引引擎的B+树索引实现1

    首先,MyISAM是MySQL早期的默认存储引擎,它在索引方面采用B+树结构。对于主键索引,MyISAM的B+树叶节点存储的是数据记录的物理地址,这意味着当查询主键时,系统可以通过索引快速定位到数据所在的物理位置,然后...

    MySQL 索引:索引为什么使用 B+树? · .pdf

    "MySQL 索引:索引为什么使用 B+树?" 本文将详细介绍 MySQL 索引为什么选择 B+ 树作为索引结构。首先,我们从二叉查找树(Binary Search Tree,BST)开始,逐步说明各种树解决的问题以及面临的新问题,从而解释 ...

    浅谈MySQL的B树索引与索引优化

    如何基于索引结构,理解常见的MySQL索引优化思路?索引结构的选择基于这样一个性质:大数据量时,索引无法全部装入内存。为什么索引无法全部装入内存?假设使用树结构组织索引,简单估算一下:假设单个索引节点12B,...

    Hash索引和B+树索引的区别

    文章目录前言B+树HashHash索引与B+树索引的区别总结 前言 我们都知道在MySQL中索引的数据结构有两种,一种是Hash,另一种是BTree。在数据表中建立什么样的索引需要我们根据实际情况进行选择。 B+树 B+树结构示意图:...

    48丨B+树:MySQL数据库索引是如何实现的?1

    【MySQL数据库索引实现原理——B+树解析】 在数据库领域,MySQL作为主流的数据库管理系统,其高效的数据存取机制离不开索引的支撑。索引是数据库系统优化查询速度的关键,它通过特定的数据结构实现快速查找、插入和...

    B+树聚簇索引 精讲开发培训

    在MySQL中,B+树聚簇索引是常用的数据结构,尤其对于大规模数据的处理至关重要。本文将深入探讨索引的本质、分类,以及B+树的优势。 首先,理解索引的本质:索引是一种有序的数据结构,类似于字典中的目录,帮助...

    006.说一下B+树中聚簇索引的查找(匹配)逻辑.mp4

    说一下B+树中聚簇索引的查找(匹配)逻辑.mp4 说一下B+树中聚簇索引的查找(匹配)逻辑.mp4 说一下B+树中聚簇索引的查找(匹配)逻辑.mp4 说一下B+树中聚簇索引的查找(匹配)逻辑.mp4 说一下B+树中聚簇索引的查找...

    005.聚簇索引与非聚簇索引b+树实现有什么区别?.mp4

    聚簇索引与非聚簇索引b+树实现有什么区别?.mp4 聚簇索引与非聚簇索引b+树实现有什么区别?.mp4 聚簇索引与非聚簇索引b+树实现有什么区别?.mp4 聚簇索引与非聚簇索引b+树实现有什么区别?.mp4 聚簇索引与非聚簇索引...

    MySQL索引面试题+索引优化+索引失效

    在面试过程中,常常会涉及到MySQL索引的相关问题,包括索引的原理、优化技巧以及索引失效的原因等。 首先,MySQL索引是一种数据结构,用于快速定位和访问数据库中的数据。它通过创建索引列和索引对象来实现,可以...

    B+树生成以及节点插入、删除与查询

    - 数据库索引:MySQL的InnoDB存储引擎使用B+树作为索引结构。 - 文件系统:用于组织和检索文件系统的数据。 - 缓存系统:在内存有限的情况下,作为数据缓存的数据结构。 通过理解和掌握B+树的原理,可以优化对...

    MySQL Innodb 索引原理详解

    在深入探讨MySQL Innodb索引之前,我们先了解几种基本的树形数据结构,包括二叉搜索树、B树、B+树以及B*树。 ##### 1.1 搜索二叉树(Binary Search Tree) 搜索二叉树是一种特殊的二叉树,每个节点至多有两个子...

    71 插入数据时到底是如何维护好不同索引的B+树的?l.pdf

    在数据库系统中,特别是MySQL中,B+树索引用于维护表中数据的有序排列,并且能够高效地支持数据的增、删、改、查操作。 在数据库中,索引分为聚簇索引和非聚簇索引(二级索引)。聚簇索引决定了表中数据的物理存储...

    003.一个表中如果没有创建索引,那么还会创建B+树吗?.mp4

    一个表中如果没有创建索引,那么还会创建B+树吗?.mp4 一个表中如果没有创建索引,那么还会创建B+树吗?.mp4 一个表中如果没有创建索引,那么还会创建B+树吗?.mp4 一个表中如果没有创建索引,那么还会创建B+树吗?....

    mysql性能优化之索引优化

    MySQL中,默认的索引类型是B+树,特别适用于范围查询和排序操作。 B+树索引的特点是所有数据都存储在叶子节点,非叶子节点仅包含指向子节点的指针,这使得数据的检索更加高效。在B+树中,数据是按照升序排列的,...

    mysql的索引优化

    - **索引结构**:MySQL索引通常是以B树形式存储的。B树具有良好的查询性能,即使在大型数据集中也能保持高效的查找能力。 - **索引的组成**:对于每个索引项,MySQL都会保存一个指向实际数据文件中记录位置的“指针...

Global site tag (gtag.js) - Google Analytics