数据库
文章平均质量分 78
Mr_Csyn
这个作者很懒,什么都没留下…
展开
-
Mysql哈希索引
哈希索引原理哈希索引原理其实就是hash表,搜索时间效率O(1),搜索效率好,也意味着磁盘IO花费少,mysql底层使用的是链式哈希表,结构如下,每一个bucket就是一个个哈希桶,也就是哈希链表的头结点。哈希结构天然的需要耗费空间资源,是一种用空间换时间的做法哈希要点:解决哈希冲突的几种方式再哈希的参数碰撞因子或者说负载因子说白了就是用的拉链法去解决的哈希冲突,也正是这个结构造成了哈希索引的一些特性哈希表没有顺序可言,只能进行等值查询,不支持范围搜索哈希表不稳定,效率最差可能变为O(原创 2021-12-30 15:52:51 · 6066 阅读 · 1 评论 -
聚集索引和非聚集索引
MyISAM主键索引MyISAM主键索引采用的是B+树,叶子结点data域存放的是数据记录的地址,原理图如下由上图可见,MyISAM的数据跟索引是分开存放的,事实也是这样,在mysql下可以看到这是在两个文件分开存放的辅助索引在MyISAM中,主索引和辅助索引(Secondary key)在结构上没有任何区别,只是主索引要求key是唯一的,而辅助索引的key可以重复,如果给其它字段创建辅助索引,结构图如下:根据上面两张图,首先按照B+Tree搜索算法搜索索引,如果指定的Key存在,则取出其d原创 2021-12-30 09:53:29 · 1046 阅读 · 0 评论 -
Mysql索引B树跟B+树
索引底层实现原理数据库索引是存储在磁盘上的,当数据量大时,就不能把整个索引全部加载到内存了,只能逐一加载每一个磁盘块(对应索引树的节点),索引树越低,越矮胖,磁盘IO次数就少MySQL支持两种索引,一种的B-树索引,一种是哈希索引,大家知道,B-树和哈希表在数据查询时的效率是非常高的。这里我们主要讨论一下MySQL InnoDB存储引擎,基于B-树(但实际上MySQL采用的是B+树结构)的索引结构。B树B-树是一种m阶平衡树,m一般是300-500(经验值),叶子节点都在同一层,由于每一个节点存储的原创 2021-12-29 10:40:50 · 2113 阅读 · 0 评论 -
MySQL索引基础
MySQL索引当表中的数据量到达几十万甚至上百万的时候,SQL查询所花费的时间会很长,导致业务超时出错,此时就需要用索引来加速SQL查询。由于索引也是需要存储成索引文件的,因此对索引的使用也会涉及磁盘I/O操作。如果索引创建过多,使用不当,会造成SQL查询时,进行大量无用的磁盘I/O操作,降低了SQL的查询效率,适得其反,因此掌握良好的索引创建原则非常重要!索引分类索引是创建在表上的,是对数据库表中一列或者多列的值进行排序的一种结果。索引的核心是提高查询的速度!索引的优点: 提高查询效率索引的缺原创 2021-12-26 16:47:12 · 981 阅读 · 0 评论 -
Mysql核心SQL
结构化查询SQLSQL是结构化查询语言(Structure Query Language),它是关系型数据库的通用语言。SQL主要可以划分为以下 3 个类别:DDL(Data Defifinition Languages)语句数据定义语言,这些语句定义了不同的数据库、表、列、索引等数据库对象的定义。常用的语句关键字主要包括 create、drop、alter等。DML(Data Manipulation Language)语句数据操纵语句,用于添加、删除、更新和查询数据库记录,并检查数据完整性,常用原创 2021-12-26 05:55:18 · 215 阅读 · 0 评论 -
Mysql完整性约束与设计
Mysql的完整性约束CREAT TABLE user(id INT unsigned PRIMARY KEY AUTO_INCREMENT COMMENT'用户的主键', nickname varchar(50) UNIQUE NOT NULL COMMENT'用户昵称', age TINYINT UNSIGNED NOT NULL DEFAULT 18, sex ENUM('male','female');)主键约束如上sql,创建表将id作为主键,令他自增,主键必须原创 2021-12-24 18:54:22 · 289 阅读 · 0 评论 -
Mysql数据类型和运算符
MySql数据类型MySQL数据类型定义了数据的大小范围,因此使用时选择合适的类型,不仅会降低表占用的磁盘空间,间接减少了磁盘I/O的次数,提高了表的访问效率,而且索引的效率也和数据的类型息息相关数值类型浮点类型推荐使用decimal类型(保存为字符串格式)字符串类型日期跟时间类型日期类型也是做项目过程中,经常使用的类型信息,尤其是TIMESTAMP和DATETIME两个类型,但是注意TIMESTAMP会自动更新时间,非常适合那些需要记录最新更新时间的场景,而DATETIME需要手动更新原创 2021-12-24 10:41:49 · 201 阅读 · 0 评论