MySQL在插入90万条数据消耗的时间以及查询90万条数据时的性能优化
来源:互联网 发布:淘宝助理源码 编辑:程序博客网 时间:2024/06/10 09:49
我的MySQL版本是5-1-39。
查看MySQL版本:
mysql> select version();
+-------------+
| version() |
+-------------+
| 3.23.56-log |
+-------------+
1 row in set (0.00 sec)
做这个测试的目的在于以后有海量数据可以采用最优的方案。
现我做以下测试步骤:1)创建一张表(TestMySQL)
2)向已创建的表插入90万条数据,统计所消耗的时间
3)查询100000 条、500000 条、900000 条数据分别耗时多长
##drop table TestMySQL;
CREATE TABLE TestMySQL(
tmId_int INT AUTO_INCREMENT PRIMARY KEY,
tmName_varchar VARCHAR(20),
tmPwd_varchar VARCHAR(20),
tmBirthday_datetime DATETIME,
tmRemark_nvarchar NVARCHAR(1000)
);SELECT * FROM TestMySQL;
##创建一个插入9十万条数据的存储过程,在调用这个存储过程执行插入操作时,至少要耗你约1个小时,
##请先100000执行一次插入操作,这样可能比一次插入900000条要快些,
##我是一次性插入的9十万条数据,耗我差不多一个小时
##drop PROCEDURE pro_while1
DELIMITER//
CREATE PROCEDURE pro_while1()
BEGIN
DECLARE cout INT;
DECLARE satrtTime DATETIME;
DECLARE endTime DATETIME;
SET cout=900000;
WHILE cout>0 DO ##cout与=之间不能空格,否则mysql会报错
IF cout=900000 THEN
SELECT NOW() INTO satrtTime;
END IF;
INSERT INTO TestMySQL VALUES(NULL,cout,cout,NOW(),cout);
IF cout=1 THEN
SELECT NOW() INTO endTime;
SELECT DATEDIFF(satrtTime,endTime);
END IF;
SET cout=cout-1;
END WHILE;
END;//CALL pro_while1();
##创建一个根据传入的显示记录条数的查询存储过程
##drop PROCEDURE selectTestMySQL_PRO
DROP PROCEDURE IF EXISTS selectTestMySQL_PRO;
DELIMITER//
CREATE PROCEDURE selectTestMySQL_PRO()
BEGIN
DECLARE Cout INT;
DECLARE totalTime FLOAT;
DECLARE startTime DATETIME;
DECLARE endTime DATETIME;
SELECT NOW() INTO startTime;
SELECT * FROM TestMysql LIMIT 900000;
SET endTime=NOW();
SELECT UNIX_TIMESTAMP(endTime) - UNIX_TIMESTAMP(startTime) INTO totalTime;##执行查询所消耗的时间
SELECT totalTime;
END;//CALL selectTestMySQL_PRO()
##当上面查询100000 查询消耗1s
##当上面查询500000 查询消耗3s
##当上面查询900000 查询消耗5s
第一次测试插入900000条数据MySQL直接消耗了我差不多1个小时。
第一种优化方案:采用创建索引方法:
##给表(TestMySQL)创建索引
CREATE INDEX tmId_int ON TestMySQL(tmId_int)##创建索引后,调用CALL selectTestMySQL_PRO() 查询100000 查询消耗1s
##创建索引后,调用CALL selectTestMySQL_PRO() 查询500000 查询消耗2s
##创建索引后,调用CALL selectTestMySQL_PRO() 查询900000 查询消耗4s第二种优化方案:采用分表方法:
- MySQL在插入90万条数据消耗的时间以及查询90万条数据时的性能优化
- 3分钟左右的时间如何向MySQL数据库中插入100万条数据
- 插入10万条数据
- android查询几十万条数据的调研(一)
- 优化sqlldr加载上100万条记录的数据!
- 优化sqlldr加载上100万条记录的数据!
- 优化sqlldr加载上100万条记录的数据!
- 100万条记录的数据加载
- 如何在hbase中快速插入10万条数据
- 如何在hbase中快速插入10万条数据
- sql 循环插入20万条数据
- Mybatis 批量插入万条数据 !
- 在 MySQL中,从10 万条主键不连续的数据里随机取 3000 条,如何做到高效?
- 在 MySQL中,从10 万条主键不连续的数据里随机取 3000 条,如何做到高效?
- 1000万条数据导入mysql
- 用PDO往MYSQL里面插入数据的话。插入五千条大概140多秒时间,插入1万条大概260多秒时间
- hibernate批量数据插入优化 ------用Hibernate插入1万条数据,怎么做,有什么好的优化方法吗
- 执行数据库查询时,如果要查询的数据有很多,假设有1000万条,用什么办法可以提高查询速率?在数据库方面或java代码方面有什么优化的方法
- 学编程,决不可心浮气燥。任何实践都是……
- windows系统下_ffmpeg编译_2011年
- 同步/异步 阻塞/非阻塞
- Http和Socket连接区别
- JBPM流程部署之部署环境初始化
- MySQL在插入90万条数据消耗的时间以及查询90万条数据时的性能优化
- 三个智力题
- 今天没有话对为师说吗
- Unix网络编程实例:获取时间网络程序
- Windows 7 IE9 Internet选项中没有“使用软件呈现而不使用 GPU 呈现”选项的完美解决方法(非重装)
- oracle redo undo
- php加水印
- 基数排序(C)
- android各个版本的区别——API变更