mysql设计主键id的时候 有的自增int 有的说要varchar(32)
create table person_int(id int primary key auto_increment,name varchar(10),sex char(1));
create table person_uuid(id varchar(36) primary key ,name varchar(10),sex char(1));
两张表分别插入1000 条数据
DROP PROCEDURE IF EXISTS person_add_int;
DELIMITER $
CREATE PROCEDURE person_add_int()
BEGIN
DECLARE i INT DEFAULT 1;
WHILE i<=1000 DO
insert into person_int (name,sex) select '张三','1' ;
SET i = i+1;
END WHILE;
END $
CALL person_add_int()
耗时 56.59s
DROP PROCEDURE IF EXISTS person_add_uuid;
DELIMITER $
CREATE PROCEDURE person_add_uuid()
BEGIN
DECLARE i INT DEFAULT 1;
WHILE i<=1000 DO
insert into person_uuid select uuid(),'张三','1' ;
SET i = i+1;
END WHILE;
END $
CALL person_add_uuid()
耗时62.207s
相同数据的1000条记录数据容量使用情况
添加索引 索引类型 unique
索引方法btree
进行select count() 查询
3 回答1.6k 阅读✓ 已解决
2 回答1.2k 阅读✓ 已解决
2 回答1.4k 阅读✓ 已解决
2 回答1.3k 阅读✓ 已解决
1 回答1k 阅读✓ 已解决
3 回答1.6k 阅读
2 回答968 阅读✓ 已解决
自增长的id适用于单机系统,因为自增长id很难处理分布式存储的数据表,尤其是需要合并表格的情况下;并且自增长id受限于数据量,int本身的长度并不适用于大数据量。
用varchar的通常都是分布式系统生成的一套UUID为主键的方案,用UUID当主键适合大量数据中的插入和更新操作,尤其是在高并发和分布式环境下,也适合跨服务器合并数据库