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 ...
随机推荐
- div展现与收起效果(鼠标移入移出)
效果图: 移入: 移出: <!DOCTYPE html> <html lang="en"> <head> <meta charset=&q ...
- 腾讯浏览服务X5内核集成
腾讯浏览服务X5内核集成https://www.jianshu.com/p/8a7224ff371a TBS 腾讯浏览器服务接入文档https://x5.tencent.com/tbs/guide/s ...
- Hibernate之一级缓存和二级缓存
1:Hibernate的一级缓存: 1.1:使用一级缓存的目的是为了减少对数据库的访问次数,从而提升hibernate的执行效率:(当执行一次查询操作的时候,执行第二次查询操作,先检查缓存中是否有数据 ...
- php用json_encode中文问题
echo json_encode($arr,JSON_UNESCAPED_UNICODE); 用这个中文就不会被转码了
- with 重写enter exit 方法
- python tkinter-消息框、对话框、文件对话框
python tkinter-消息框.对话框.文件对话框 消息框 导入 import tkinter import tkinter.messagebox #这个是消息框,对话框的关键 提示消息框 ...
- HTML5 Shiv完美解决IE(IE6/IE7/IE8)不兼容HTML5标签的方法
这篇文章主要介绍了HTML5 Shiv完美解决IE(IE6/IE7/IE8)不兼容HTML5标签的方法,需要的朋友可以参考下 HTML5的语义化标签以及属性,可以让开发者非常方便地实现清晰的web页面 ...
- setting.xml配置文件
在此,简单的说下. setting.xml 和 pom.xml这两各配置文件,到此是怎样? setting.xml setting.xml,这个配文件,是全局的. 比如你的是构建,web项目.我的是 ...
- 分布式服务注册中心XXL-REGISTRY
<分布式服务注册中心XXL-REGISTRY> 一.简介 1.1 概述 XXL-REGISTRY 是一个轻量级分布式服务注册中心,拥有"轻量级.秒级注册上线.多环境.跨语言.跨机 ...
- 关于 tensorflow-gpu 中 CUDA 和 CuDNN 版本适配问题
问题 今天在使用 tensorflow-yolov3 的时候,发现报错 Loaded runtime CuDNN library: but source was compiled with: . Cu ...