Mysql主键 UUID做主键,自增主键及字符串主键在插入、查询,分页等性能

1.插入方面

UUID做主键,其他字段相同,插入100万条数据,用了3.5个小时
自增主键,其他字段相同,插入相同的100万条数据,用了16分钟
有序增长的字符串做主键,其他字段相同,插入相同100万条数据,用了7分钟

2.查询方面
UUID做主键,select count() from info 查询数量花了2.86秒
自增主键,select count(
) from apple 查询数量花了1.5秒
有序增长的字符串做主键,SELECT COUNT(*) FROM banana 花了0.8秒

3.分页查询
UUID做主键,SELECT * FROM info a
INNER JOIN (

SELECT id FROM info LIMIT 1000000,10
) b
ON a.id = b.id
查询花了2.7秒

自增主键, SELECT * FROM apple a
INNER JOIN (

SELECT id FROM apple LIMIT 1000000,10
) b
ON a.id = b.id
查询花了1秒

有序增长的字符串做主键: SELECT * FROM banana a
INNER JOIN (

SELECT id FROM banana LIMIT 1000000,10
) b
ON a.id = b.id
花了1秒

排序在分页
UUID: SELECT * FROM info a
INNER JOIN (

SELECT id FROM info ORDER BY NAME LIMIT 1000000,10
) b
ON a.id = b.id
查询花费:2.75秒

自增主键: SELECT * FROM apple a
INNER JOIN (

SELECT id FROM apple ORDER BY NAME LIMIT 1000000,10
) b
ON a.id = b.id
查询花费:1.2秒

有序增长的字符串做主键:SELECT * FROM banana a
INNER JOIN (

SELECT id FROM banana ORDER BY NAME LIMIT 900000,10
) b
ON a.id = b.id
花了1秒

(我的机器是比较差的那种,好的机器跑起来肯定更快)
其中name添加了索引,没有索引速度还要慢10倍。

其他方面的问题暂时没考虑,插入感觉影响特别大。用无序的字符做主键,对插入影响很大,用有序的字符串做主键,对插入,查询都没有影响。

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值