mysql单表1000万条_mysql单表千万条数据测试

本文通过在Win7环境下使用MySQL 5.5版本进行了一系列性能测试,包括数据导入、整表数据统计、分页查询等操作,并对比不同方法的效率差异。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

软件环境:win7,mysql版本5.5,InnoDB存储引擎。

硬件环境:普通笔记本,CPU P8700双核2.53GHz,内存3G,5400转机械硬盘1000GB。

建了一张表,id列是自增长bigint,再加上其他varchar、datetime型的字段,总共8个字段,通过java生成了insert的sql文件,一共62个文件,每个文件50万行(约88M),总共3100万行记录(约5.35G),通过source导入,从中午1:30一直到18:00才导完,花了快4个半小时,导完后,数据文件大小约2.5G。后来听说用load data infile可以加快导数据时间,改天再试试。

结论1:由此可见,mysql单表支持1000万条数据是完全可行的。

此时只有id列上有主键,聚集索引,测试开始。

1、整表数据行数统计(select count)

select count(*) from t_test;

返回3100万条数据足足花了1分21秒,多次测试取平均值,也差不多要1分6秒。

select count(n_id) from t_test;

返回3100万条数据也要1分多,感觉比count(*)性能好不了多少,难道是数据量级还不够大?

给n_id建了一个非聚集索引,create index idx_nid on t_test(n_id) 耗时4分43秒。

再次 select count(n_id) from t_test;

返回3100万条数据耗时13.52秒;快了不少!

select count(*) from t_baginfo;

返回3100万条数据耗时12.86秒;比count(n_id)快约700毫秒;

结论2:在只有聚集索引的情况下,再给主键列建一个非聚集索引后,select count(*)速度可以得到很大提升

2、分页测试

a、取1万行后面10行记录:

select * from t_test limit 10000,10;耗时0.03秒

只取n_id

select n_id from t_test limit 10000,10;耗时0.01秒

b、取10万行后面10行记录:

select * from t_test limit 100000,10;耗时0.14秒

只取n_id

select n_id from t_test limit 100000,10;耗时0.08秒

c、取100万行后面的10行记录:

select * from t_test limit 1000000,10;耗时1.69秒

只取n_id

select n_id from t_test limit 1000000,10;耗时0.77秒

d、取1000万行后面的10行记录:

select * from t_test limit 10000000,10;耗时17.86秒

select * from t_test where n_id>(select n_id from t_test  limit 9999999,1 ) limit 10; 耗时18.27秒

加n_id排序:

select * from t_test order by n_id limit 10000000,10;耗时18.14秒

select * from t_test where n_id>(select n_id from t_test order by n_id limit 9999999,1 ) limit 10; 耗时18.27秒

只取n_id

select n_id from t_test limit 10000000,10;耗时4.22秒

select n_id from t_test where n_id>(select n_id from t_test  limit 9999999,1 ) limit 10; 耗时5.51秒

加n_id排序:

select n_id from t_test order by n_id limit 10000000,10;耗时17.25秒

select n_id from t_test where n_id>(select n_id from t_test order by n_id limit 9999999,1 ) limit 10; 耗时17.98秒

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值