B+树,经过优化的 B+树 主要是在所有的叶子结点中增加了指向下一个叶子节点的指针,因此 InnoDB 建 议为大部分表使用默认自增的主键作为主索引。 ...
分类:
其他好文 时间:
2020-07-14 13:34:08
阅读次数:
62
问:分库分表之后,id 主键如何处理? 面试官心理分析 其实这是分库分表之后你必然要面对的一个问题,就是 id 咋生成?因为要是分成多个表之后,每个表都是从 1 开始累加,那肯定不对啊,需要一个全局唯一的 id 来支持。所以这都是你实际生产环境中必须考虑的问题。 面试题剖析 基于数据库的实现方案 数 ...
分类:
其他好文 时间:
2020-07-14 10:35:50
阅读次数:
65
今天系统用户反馈了一个问题,根据分析发现,在Oracle数据库表中,主键值1690出现了重复。经过反复排查,发现表对应的序列号的值比对应的表中生成的id值要小,查看数据发现,表中的部分数据是直接insert语句插入的,而这个时候,又未同步更新表序列,通过应用程序生成的数据又是根据序列同步生成的,这个 ...
分类:
数据库 时间:
2020-07-14 00:20:24
阅读次数:
95
1. 建表:建表的时候要注意给一个主键,通常我们都是将id设置为主键(只有一个主键),这样的话可以唯一标识某一行记录,不会出现张冠李戴的错误。当我们将ID设成主键的时候,要注意不能为null,且要将这个字段设置为自增!!!如果忘了设置自增的话,那么往数据库插入数据的时候会插不进去,且程序也会报错。 ...
分类:
数据库 时间:
2020-07-13 18:37:41
阅读次数:
77
主键:保证数据的唯一性,非空且唯一,一般设置主键的语法为:字段 类型 PRIMARY KEY;或者 字段 类型,PRIMARY KEY(字段名) 外键:保证数据的完整性,一致性。一般设置的外键关联的是另一张表的主键。外键的插入或者更新不能插入或更新主键表中没有的值,切记删除主键表中的数据时, 要先去 ...
分类:
数据库 时间:
2020-07-12 22:14:35
阅读次数:
102
InnoDB:支持事务,支持表级锁,行级锁,支持外键,是非聚集索引。 MyISAM:不支持事务,支持表级锁,不支持外键,聚集索引。 聚集索引和非聚集索引的区别:InnoDB是聚集索引,使用B+Tree作为索引结构,数据文件是和(主键)索引绑在一起的(表数据文件本身就是按B+Tree组织的一个索引结构 ...
分类:
数据库 时间:
2020-07-12 22:03:47
阅读次数:
71
1. 需要 Map 的主键和取值时,应该迭代 entrySet() 当循环中只需要 Map 的主键时,迭代 keySet() 是正确的。但是,当需要主键和取值时,迭代 entrySet() 才是更高效的做法,比先迭代 keySet() 后再去 get 取值性能更佳。 反例: Map<String, ...
分类:
编程语言 时间:
2020-07-12 20:25:28
阅读次数:
52
序言 为什么InnoDB不将总数存起来? InnoDB直接count(*)会遍历全表(没有where条件),虽然结果准确,但会导致性能问题。 按照效率排序的话,count(字段)<count(主键id)<count(1)≈count(*),所以建议读者,尽量使用count(*)。 资料 ...
分类:
数据库 时间:
2020-07-12 12:29:06
阅读次数:
60
主键字段报错doesn't have a default value (mybatis) 最近导师交给我一个项目,今天调试新功能的时候发现在执行数据库插入操作的时候,主键报错 补充说明一下,workorder_number做主键,char类型。 在控制台查看代码执行到插入语句的时候其对应的sql语句 ...
分类:
其他好文 时间:
2020-07-11 22:52:16
阅读次数:
89
声明:此MySQL基础学习源自尚硅谷。(推荐)b站官方链接:https://www.bilibili.com/video/BV1xW411u7ax?p=1 标识列 又称为自增长列 含义:可以不用手动的插入值,系统提供默认的序列值 特点: 1、标识列必须和主键搭配吗?不一定,但要求自增长列必须为一个k ...
分类:
数据库 时间:
2020-07-11 20:58:29
阅读次数:
69