MySQL 大致测试更新时间
1:需求:把一个2千万条数据的一个表,随机更新其中的二十行需要大致多久?
- DROP TABLE IF EXISTS test20;
- CREATE TABLE test20(
- id INT AUTO_INCREMENT PRIMARY KEY,
- money DOUBLE,
- createdtime DATETIME)ENGINE=INNODB DEFAULT CHARSET=UTF8;
- DROP PROCEDURE IF EXISTS pro_test20;
- DELIMITER &&
- CREATE PROCEDURE pro_test20(IN inr int)
- BEGIN
- DECLARE i INT DEFAULT 0;
- START TRANSACTION;
- WHILE i<inr DO
- INSERT INTO test20(money,createdtime) values(234567891023,'2014-06-22 20:18:38');
- SET i=i+1;
- END WHILE;
- COMMIT;
- END &&
- DELIMITER ;
- mysql> call pro_test20(10000000);
- Query OK, 0 rows affected (4 min 50.37 sec)
- mysql> call pro_test20(10000000);
- Query OK, 0 rows affected (8 min 18.97 sec)
- #20次
- INSERT INTO test20(money,createdtime) values(234567891023,'2013-03-33 20:18:38');
- mysql> INSERT INTO test20(money,createdtime) values(234567891023,'2013-03-03 20:18:38');
- Query OK, 1 row affected, 1 warning (0.02 sec)
- UPDATE test20 SET money=money+10000000,createdtime=now()
- WHERE createdtime='2013-03-03 20:18:38';
- mysql> UPDATE test20 SET money=money+10000000,createdtime=now() WHERE id BETWEEN 200000 AND 200020;
- Query OK, 21 rows affected (0.01 sec)
- Rows matched: 21 Changed: 21 Warnings: 0
- mysql> UPDATE test20 SET money=money+10000000,createdtime=now() where id in (36,457,67842,21,324,68,23,12,345,547,56,234,7263,233525,252522,3523,76666,1231,54);
- Query OK, 19 rows affected (0.05 sec)
- Rows matched: 19 Changed: 19 Warnings: 0
1:需求:把一个2千万条数据的一个表,随机更新其中的一千行需要大致多久?
存储过程测试1:(效率很低)
- DROP PROCEDURE IF EXISTS pro_tab1000;
- DROP TABLE IF EXISTS tab_test20;
- CREATE TABLE tab_test20(id int)ENGINE=INNODB DEFAULT CHARSET=UTF8;
- DELIMITER &&
- CREATE PROCEDURE pro_tab1000(IN inr int)
- BEGIN
- DECLARE i INT DEFAULT 0;
- WHILE i<inr DO
- INSERT INTO tab_test20 SELECT floor(RAND() * (SELECT MAX(id) FROM test20));
- SET i=i+1;
- END WHILE;
- END &&
- DELIMITER ;
- CALL pro_tab1000(1000);
- UPDATE test20 SET money=money+10000000,createdtime=now() WHERE id in (SELECT DISTINCT id FROM tab_test20);
存储过程测试2:2s
- DELIMITER &&
- DROP PROCEDURE IF EXISTS pro_test1000;
- CREATE PROCEDURE pro_test1000(IN inr int)
- BEGIN
- DECLARE i INT DEFAULT 0;
- DECLARE j INT ;
- SELECT FLOOR(RAND()*(SELECT MAX(id) FROM test20)) into j;
- WHILE i<inr DO
- UPDATE test20 SET money=money+10000000,createdtime=now() WHERE id = j;
- SET i=i+1;
- END WHILE;
- END &&
- DELIMITER ;
效率很低的语句:
- SELECT id FROM test20 ORDER BY rand() LIMIT 10
- mysql> SELECT id FROM test20 ORDER BY rand() LIMIT 10;
- +----------+
- | id |
- +----------+
- | 1876355 |
- | 10266755 |
- | 14746331 |
- | 17533398 |
- | 8164806 |
- | 8438406 |
- | 12884382 |
- | 17285257 |
- | 9817314 |
- | 10273314 |
- +----------+
- 10 rows in set (26.67 sec)
问题1:更新记录很多的时候,字段上有索引快还是没有索引快?
MySQL 大致测试更新时间的更多相关文章
- mysql table 最新更新时间
查看表的最后mysql修改时间 SELECT TABLE_NAME,UPDATE_TIME FROM information_schema.tables where TABLE_SCHEMA='d ...
- mysql中自动更新时间CURRENT_TIMESTAMP
timestamp的两个属性:CURRENT_TIMESTAMP 和ON UPDATE CURRENT_TIMESTAMP http://blog.163.com/qiongling007@126/b ...
- MYSQL 更新时间自动同步与创建时间默认值共存问题
本文作者:苏生米沿 本文地址:http://blog.csdn.net/sushengmiyan/article/details/50326259 在使用SQL的时候,希望在更新数据的时候自动填充更新 ...
- mysql中创建时间和更新时间的区别
`create_time` ) NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `update_time` ) ) COMMENT '更新时间', 而在界 ...
- MySQL load数据的时候自动更新时间
MySQL load数据的时候自动更新时间 前提 CREATE TABLE table_name ( dt varchar(255) NULL , ctime timestamp NULL ON UP ...
- MYSQL查看数据表最后更新时间
MYSQL查看数据表最后更新时间 - 拨云见日 - CSDN博客 https://blog.csdn.net/warnerwu/article/details/73352774 mysql> S ...
- MYSQL 更新时间自己主动同步与创建时间默认值共存问题
本文作者:苏生米沿 本文地址:http://blog.csdn.net/sushengmiyan/article/details/50326259 在使用SQL的时候,希望在更新数据的时候自己主动填充 ...
- MySQL表内更新时,自动记录时间
1.创建表: create table test_time(id int primary key not null,status varchar(24),create_time datetime d ...
- mysql自动更新时间
ALTER TABLE sys_user MODIFY COLUMN update_time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDAT ...
随机推荐
- DDD领域模型实现依赖注入(六)
添加下订单的值对象: public partial class CustomerInfo:ValueObject { /// <summary> /// 下订单的值对象 /// </ ...
- 图解 VS2015 如何打包winform 安装程序
http://learn.flexerasoftware.com/content/IS-EVAL-InstallShield-Limited-Edition-Visual-Studio?lang=10 ...
- springbank 开发日志 Spring启动过程中对自定义标签的处理
这篇随笔的许多知识来源于:http://www.importnew.com/19391.html 之所以会去看这些东东,主要是希望能够模仿spring mvc的处理流程,做出一套合理的交易处理流程. ...
- ctsc2018
day1: 8:20分还不知道考场在哪给ccf差评 8:30开始看题 第一题感觉是个模拟啊 很烦 瞄了一眼第二题第三题题意挺简单的啊感觉还不错 然后开始仔细看t1 然后我发现好像可以退狮子 应该是个数 ...
- IIS 之 通过 Web.config 修改文件上传大小限制设置方法
在IIS 6.0中,不设置默认大小为4M,设置文件上传大小的方法,maxRequestLength(KB),executionTimeout(毫秒),配置如下节点: <system.web> ...
- HDU3038 How Many Answers Are Wrong 并查集
欢迎访问~原文出处——博客园-zhouzhendong 去博客园看该题解 题目传送门 - HDU3038 题意概括 有一个序列,共n个数,可正可负. 现在有m个结论.n<=200000,m< ...
- 【noip模拟赛5】任务分配 降维dp
描述 现有n个任务,要交给A和B完成.每个任务给A或给B完成,所需的时间分别为ai和bi.问他们完成所有的任务至少要多少时间. 输入 第一行一个正整数n,表示有n个任务.接下来有n行,每行两个正整数a ...
- HDU Tody HDU2112
不想用floyd了 也不一定适合 floyd只能处理小数据 dijkstra算法 wa了很久 一个是dijkstra里面的u 导致RE了无数次 下标溢出 还有就是注意细节 当起点和终点 ...
- 017 Spark的运行模式(yarn模式)
1.关于mapreduce on yarn 来提交job的流程 yarn=resourcemanager(RM)+nodemanager(NM) client向RM提交任务 RM向NM分配applic ...
- 084 HBase的数据迁移(含HDFS的数据迁移)
1.查找命令 bin/hadoop 2.启动两个HDFS集群 hadoop0,hadoop1,都是伪分布式的集群 3.启动hadoop3的zookeeper与hbase 注意点:需要开启yarn服务, ...