MySQL数据库面试题:一千万的数据 应该如何查询?
导读:MySQL数据库面试题,今天带来的IT技巧小经验MySQL数据库面试题及一千万的数据方面的讲解,下面为详细的介绍。 最近在给大家做模拟面试和简历优化,其中发现很多人一看到 什么千万级数据
MySQL数据库面试题
今天带来的IT技巧小经验MySQL数据库面试题及一千万的数据方面的讲解,下面为详细的介绍。
最近在给大家做模拟面试和简历优化,其中发现很多人一看到什么千万级数据之类的面试题就会腿软。
也许有些人没遇过上千万数据量的表,也不清楚查询上千万数据量的时候会发生什么。
今天就来带大家实操一下,这次是基于MySQL 5.7.26做测试

准备数据
没有一千万的数据怎么办?
没有数据自己不会造吗?
造数据难吗?
代码创建一千万?
那是不可能的,太慢了,可能真的要跑一天。可以采用数据库脚本执行速度快很多。
创建表
CREATE TABLE `user_operation_log` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`user_id` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
`ip` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
`op_data` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
`attr1` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
`attr2` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
`attr3` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
`attr4` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
`attr5` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
`attr6` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
`attr7` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
`attr8` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
`attr9` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
`attr10` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
`attr11` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
`attr12` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic;
创建数据脚本
采用批量插入,效率会快很多,而且每1000条数就commit,数据量太大,也会导致批量插入效率慢
DELIMITER ;;
CREATE PROCEDURE batch_insert_log()
BEGIN
DECLARE i INT DEFAULT 1;
DECLARE userId INT DEFAULT 10000000;
set @execSql = 'INSERT INTO `test`.`user_operation_log`(`user_id`, `ip`, `op_data`, `attr1`, `attr2`, `attr3`, `attr4`, `attr5`, `attr6`, `attr7`, `attr8`, `attr9`, `attr10`, `attr11`, `attr12`) VALUES';
set @execData = '';
WHILE i<=10000000 DO
set @attr = "'测试很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长的属性'";
set @execData = concat(@execData, "(", userId + i, ", '10.0.69.175', '用户登录操作'", ",", @attr, ",", @attr, ",", @attr, ",", @attr, ",", @attr, ",", @attr, ",", @attr, ",", @attr, ",", @attr, ",", @attr, ",", @attr, ",", @attr, ")");
if i % 1000 = 0
then
set @stmtSql = concat(@execSql, @execData,";");
prepare stmt from @stmtSql;
execute stmt;
DEALLOCATE prepare stmt;
commit;
set @execData = "";
else
set @execData = concat(@execData, ",");
end if;
SET i=i+1;
END WHILE;
END;;
DELIMITER ;
相关阅读
-
什么是网络附加存储 NAS? 网络附加存储的适用场景有哪些
一篇很详细的教程是关于什么是网络附加存储方面的介绍,一起来了解了解吧。 网络附加存储(Network-Attached Storage,简称NAS)是一种基于网络的存储解决方案,允许多个设备通过网络共享存储
-
在线网页制作系统有哪些 网页设计制作网站推荐
IT电脑小知识篇,关于在线网页制作系统有哪些和网页设计制作网站推荐的IT小经验,很不错的方法小知识,建议收藏哦! HTML5多媒体作品以其对各种平台的兼容而见长,目前已获得了广泛的应
-
远程数据库连接慢有哪些原因 数据库连接速度缓慢的解决方法
本文为您带来的是远程数据库连接慢有哪些原因的相关介绍,一起跟随小编看看吧! 数据库连接速度缓慢可能有多种原因,以下是一些可能的原因及其相应的解决方法: 网络延迟 :数据库服
-
Web标准全面解析:构建高质量网站的基石
小编为你介绍Web标准全面解析的IT小经验,一起来了解了解吧。 1. 引言 随着互联网的快速发展,Web技术不断地向前演进,各种浏览器、设备和操作系统纷繁复杂。 为了确保网站在不同环境下都


