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倍。

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

猜你喜欢

转载自blog.csdn.net/zhanglinlove/article/details/83540292