MySQL数据库中索引原理与数据结构

MySQL中的索引分为3种:

1,主键索引:即用主键当唯一索引

2,常规索引:实现方式为B树和哈希表

3,全文索引:实现原理类似倒排索引,常用来查询字段中包含关键字

下面复习下B-TREE和hash-table

1 B-tree

B树可以在O(lgn)的时间内实现许多动态集合操作,除了用在数据库索引上,也被用在磁盘查找上。

B树是一种多路查找平衡多叉树,具有以下属性:

1,如果根节点不是叶节点,则其至少有两棵子树。

2、每个非根节点所包含的关键字个数 j 满足:┌m/2┐ - 1 <= j <= m - 1;

3、除根结点以外的所有结点(不包括叶子结点)的度数正好是关键字总数加1,故内部子树个数 k 满足:┌m/2┐ <= k <= m ;

4、所有的叶子结点都位于同一层。

每个节点中的元素从小到大排序

时间: 2024-12-17 06:46:26

MySQL数据库中索引原理与数据结构的相关文章

MySQL数据库中的索引(一)——索引实现原理

今天我们来探讨一下数据库中一个很重要的概念:索引. MySQL官方对索引的定义为:索引(Index)是帮助MySQL高效获取数据的数据结构,即索引是一种数据结构. 我们知道,数据库查询是数据库的最主要功能之一.我们都希望查询数据的速度能尽可能的快,因此数据库系统的设计者会从查询算法的角度进行优化.最基本的查询算法当然是顺序查找(linear search),这种复杂度为O(n)的算法在数据量很大时显然是糟糕的,好在计算机科学的发展提供了很多更优秀的查找算法,例如二分查找(binary searc

数据库05 /索引原理/创建用户和授权/数据库备份/慢查询优化/正确使用索引

目录 数据库05 /索引原理/创建用户和授权/数据库备份/慢查询优化/正确使用索引 1.什么是索引 2.索引的原理 3.索引的数据结构(聚集索引.辅助索引) 4.索引操作 5.索引的两大类型hash与btree 6.创建用户和授权 6.1对新用户的增删改 6.2对当前用户授权管理 7.MySQL数据库备份 8.锁和事务 9.慢查询优化的基本步骤 10.正确的使用索引 10.1 索引命中需注意的问题 10.2 其它注意事项 11.了解知识点 数据库05 /索引原理/创建用户和授权/数据库备份/慢查

从SQLSERVER/MYSQL数据库中随机取一条或者N条记录

原文:从SQLSERVER/MYSQL数据库中随机取一条或者N条记录 从SQLSERVER/MYSQL数据库中随机取一条或者N条记录 很多人都知道使用rand()函数但是怎麽使用可能不是每个人都知道 建立测试表 USE [sss] GO CREATE TABLE RANDTEST(ID INT DEFAULT RAND()*100,NAME NVARCHAR(200) DEFAULT 'nihao') GO CREATE INDEX IX_RANDTEST_ID ON RANDTEST(ID)

为MySQL数据库添加索引

为mysql数据库建立索引 转载:http://www.cnblogs.com/cy163/archive/2008/10/27/1320798.html 最普通的情况,是为出现在where子句的字段建一个索引.为方便讲述,我们先建立一个如下的表. Code代码如下: CREATE TABLE mytable ( id serial primary key, category_id int not null default 0, user_id int not null default 0, a

mysql数据库的索引

day04  MySQL数据库的索引 一.索引概述: 索引是由一张表中的某个列或多列组成,而创建索引的目的是为了更优化管理我们的数据库表,提升我们查询使用数据库表的速度. 二.索引 1.索引的分类: 索引分为多种索引,具体的索引在下图中可以看见 普通索引:不应用任何限制条件的索引,可以在任何类型的数据库中创建. 唯一索引:使用unique参数可以设置唯一索引.必须是唯一的,主键是一种特殊的唯一索引. 全文索引:使用fulltext参数可以设置索引的全文索引,只能够创建在char.varchar或

Java学习总结(十八)——MySQL数据库(4)MySQL数据库中的视图,函数,存储过程中常见循环

一.MySQL存储过程中常见的循环1.while循环:WHILE.....DO.....END WHILE例1:创建存储过程(求1+2+.......+num的和):创建成功,进行调用:显示结果:2.REPEAT循环: REPEAT.........UNTLL END REPEAT例2:创建存储过程:创建完成,调用存储过程:显示结果:3.LOOP循环:LOOP END LOOP 例3:创建存储过程:创建成功,调用存储过程:显示结果:二.MySQL中的视图1.概念:有结构(有行有列),但没有结果(

MYSQL 数据库中专业术语叫法

开始学习MySQL 数据库前,了解MYSQL 数据库中专业术语叫法,显示对数据足够了解和运用. 数据库: 数据库是一些关联表的集合.数据表: 表是数据的矩阵.在一个数据库中的表看起来像一个简单的电子表格.列: 一列(数据元素) 包含了相同的数据, 例如邮政编码的数据.行:一行(=元组,或记录)是一组相关的数据,例如一条用户订阅的数据.冗余:存储两倍数据,冗余降低了性能,但提高了数据的安全性.主键:主键是唯一的.一个数据表中只能包含一个主键.你可以使用主键来查询数据.外键:外键用于关联两个表.复合

关于事物型数据库的索引原理

1.二分查找算法 二分查找法的时间复杂度为Ο(log2n).大家如果有兴趣可以去验证一下这个结果,这里我就不做解释了. 我们具体来感受一下二分查找法有多强大,假设:集合里面有40亿个元素,排序方式为从左往右,依次递增,我们最多需要查找log2 4000000000  = 32次,就可以在40亿个元素里面找到我们需要的元素 .说点题外话:虽然二分查找法很强大,但这并不意味着二分查找法适用于任何场景,因为我们在为业务场景选择算法时,除了算法的时间复杂度,还要考虑空间复杂度,而且越复杂的程序越是容易发

Mysql数据库的索引和视图详解

Mysql数据库的索引和视图详解 索引的概念 数据库的索引与书籍中的目录类似在一本书中,无需阅读整本书,利用目录就可以快速查找所需信息书中的目录是一个词语列表,其中注明了包含各个词的页码数据库索引在数据库中,索引数据库程序无需对整个表进行扫描,就可以在其中找到所需数据数据库中的索引是某个表中一列或若干列的集合,以及物理标识这些值的数据页的逻辑指针清单 索引的作用 设置了合适的索引之后,数据库利用葛总快速的定位技术,能够大大加快查询速率特别是当表很大时,或者查询涉及到多个表时,使用索引可使查询加快