mysql uuid 一般从多少位开始就能定唯一值

mysql uuid 一般从多少位开始就能定唯一值,第1张

 先建一个测试用的表tbl_user,有三个字段:Id、Name、Age,其中Id为主键

1: drop table if exists `tbl_user`

2: create table

3: `tbl_user` (

4: `Id` int(10),

5: `Name` varchar(20),

6: `Age` int(10),

7: PRIMARY KEY (`Id`)

8: )DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci

插入几条数据

1: insert into tbl_user values (1000,"小猫",22)

2: insert into tbl_user values (1001,"小狗",22)

3: insert into tbl_user values (1002,"小刺猬",22)

4:

5: select * from tbl_user

主键一般有几种选择:

一般DBA会推荐InnoDB表必须建主键,而且推荐使用整型的自增主键。

三种选择的优先级是 自增id >业务整型字段 >UUID。

如果使用UUID作为主键,那么B+树的聚集索引的key就是UUID,UUID通常会比整型字段要长,而且字符串的比较是需要逐个字节比较,所以得出两个缺点

比起自增id,虽然都是整型,但是业务字段有可能不是按顺序插入到表,考虑下图。

此时要插入索引值为4的节点,而B+树每页最多存放两个节点,插入4节点后,树变为

B+树特点是,所有节点从左右往右排好序,自增id插入B+是有序的,只会在节点放满了之后,才会新增一个页去存放,比起非自增id,会减少页分裂次数,提高性能。

对非主键进行索引,就是普通索引。

与聚集索引一样,每个普通索引建立后,会用一个B+树进行维护,但是叶子节点并非存储索引对应行的所有记录,而是只存储了主键值,此时得到主键值后,再回到聚集索引上查找一次,即可得到数据记录,即回表。

这个不带行数据完整信息的索引,就叫二级索引(secondary index),也叫辅助索引。

对多个字段同时建索引,就是联合索引。

当查询条件同时涉及多个字段,就可以使用联合索引。

联合索引会根据字段的出现顺序在B+树中排好序,例如先入name排序,当name相同时就使用age,直到比较出大小为止。 利用这个特性,可以使用最左前缀原则优化SQL。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/7130062.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-02
下一篇 2023-04-02

发表评论

登录后才能评论

评论列表(0条)

保存