
数据结构
数据结构
消灭BUG鸭
交流分享,共同进步
展开
-
创建索引时的注意事项
1、非空字段:应该指定列为NOT NULL,除非你想存NULL。在 MySQL 中,含有空值的列很难进行查询优化,因为它们使得索引、索引的统计信息以及比较运算更加复杂。你应该用0、一个特殊的值或者一个空串代替空值;2、取值离散大的字段:(变量各个取值之间的差异程度)的列放到联合索引的前面,可以通过count()函数查看字段的差异值,返回值越大说明字段的唯一值越多字段的离散程度高;3、索引字段越小越好:数据库的数据存储以页为单位一页存储的数据越多一次IO操作获取的数据越大效率越高。唯一、不为空、经常被查原创 2021-07-15 11:01:19 · 625 阅读 · 0 评论 -
聚集索引与非聚集索引的区别
非聚集索引和聚集索引的区别在于: 通过聚集索引可以查到需要查找的数据, 而通过非聚集索引可以查到记录对应的主键值 , 再使用主键的值通过聚集索引查找到需要的数据。聚集索引和非聚集索引的根本区别是表记录的排列顺序和与索引的排列顺序是否一致。聚集索引(Innodb)的叶节点就是数据节点,而非聚集索引(MyisAM)的叶节点仍然是索引节点,只不过其包含一个指向对应数据块的指针。...原创 2021-07-15 10:59:07 · 987 阅读 · 0 评论 -
非聚集索引的总结
如果您认识某个字,您可以快速地从自动中查到这个字。但您也可能会遇到您不认识的字,不知道它的发音,这时候,您就不能按照刚才的方法找到您要查的字,而需要去根据"偏旁部首"查到您要找的字,然后根据这个字后的页码直接翻到某页来找到您要找的字。但您结合"部首目录"和"检字表"而查到的字的排序并不是 真正的正文的排序方法,比如您查"李"字,我们可以看到在查部首之后的检字表中"李"的页码是672页,检字表中"李"的上面是"三"字,但页码却是63页,"李"的下面是"四"字,页面是390页。很显然,这些字并不是真正的.原创 2021-07-15 10:57:46 · 109 阅读 · 0 评论 -
聚集索引的总结
聚簇索引就是按照拼音查询,非聚簇索引就是按照偏旁等来进行查询其实,我们的汉语字典的正文本身就是一个聚集索引。比如,我们要查"安"字,就会很自然地翻开字典的前几页,因为"安"的拼音是"an",而按照拼音排序 汉字的字典是以英文字母"a"开头并以"z"结尾的,那么"安"字就自然地排在字典的前部。如果您翻完了所有以"a"开头的部分仍然找不到这个字,那么就说明您的字典中没有这个字;同样的,如果查"张"字,那您也会将您的字典翻到最后部分,因为"张"的拼音是"zhang"。也就是说,字典的正文部分本身 就是一个.原创 2021-07-15 10:55:06 · 109 阅读 · 0 评论 -
MySQL索引主要使用的两种数据结构
哈希索引,对于哈希索引来说,底层的数据结构肯定是哈希表,因此在绝大多数需求为单条记录查询的时候,可以选择哈希索引,查询性能最快;其余大部分场景,建议选择BTree索引。BTree索引,Mysql的BTree索引使用的是B树中的B+Tree,BTREE索引就是一种将索引值按一定的算法,存入一个树形的数据结构中(二叉树),每次查询都是从树的入口root开始,依次遍历node,获取leaf。但对于主要的两种存储引擎(MyISAM和InnoDB)的实现方式是不同的。...原创 2021-07-14 11:11:20 · 513 阅读 · 0 评论 -
多进程和多线程的区别
多进程和多线程的区别1、频繁修改:需要频繁创建和销毁的优先使用多线程。2、计算量:需要大量计算的优先使用多线程, 因为需要消耗大量CPU资源且切换频繁,所以多线程好一点。3、相关性:任务间相关性比较强的用多线程,相关性比较弱的用多进程。因为线程之间的数据共享和同步比较简单。4、多分布:可能要扩展到多机分布的用多进程,多核分布的用多线程。...原创 2021-06-21 22:39:26 · 247 阅读 · 0 评论 -
堆和栈的区别
■申请方式不同。■栈由系统自动分配。■堆是自己申请和释放的。■申请大小限制不同。栈顶和栈底是之前预设好的,栈是向栈底扩展,大小固定,可以通过ulimit -a查看,由ulimit -s修改。堆向高地址扩展,是不连续的内存区域,大小可以灵活调整。■申请效率不同。栈由系统分配,速度快,不会有碎片。堆由程序员分配,速度慢,且会有碎片。...原创 2021-06-20 11:03:08 · 272 阅读 · 0 评论 -
关系型和非关系型数据库
关系型和非关系型数据库1、关系型数据库:关系型数据库,是指采用了关系模型来组织数据的数据库,其以行和列的形式存储数据,以便于用户理解,关系型数据库这一系列的行和列被称为表,一组表组成了数据库。用户通过查询来检索数据库中的数据,而查询是一个用于限定数据库中某些区域的执行代码。关系模型可以简单理解为二维表格模型,而一个关系型数据库就是由二维表及其之间的关系组成的一个数据组织。#关系型数据库的优点容易理解。因为它采用了关系模型来组织数据。可以保持数据的一致性。数据更新的开销比较小。支持复杂查询(带原创 2021-06-20 10:14:07 · 213 阅读 · 0 评论 -
在一个二维数组中查找整数【python实现】
在一个二维数组中查找整数【python版】1、题目描述:2、思路:题目类似二分排序,但注意:数组本身的规律,按照二分排序比大小选择目标的规律,可以从左下角开始,如果array[i][j]大于target则往上移动,小于则往右移动,需要注意不能越界。因此就是找规律二分排序!3、代码示例# -*- coding:utf-8 -*-class Solution: # array 二维列表 def Find(self, target, array): # write原创 2021-06-16 22:29:50 · 498 阅读 · 0 评论