MySQL数据库面试题:一千万的数据 应该如何查询?(2)
MySQL数据库面试题
开始测试
不念的电脑配置比较低:win10 标压渣渣i5 读写约500MB的SSD
由于配置低,本次测试只准备了3148000条数据,占用了磁盘5G(还没建索引的情况下),跑了38min,电脑配置好的同学,可以插入多点数据测试
SELECT count(1) FROM `user_operation_log`
返回结果:3148000
三次查询时间分别为:
- 14060 ms
- 13755 ms
- 13447 ms
普通分页查询
MySQL 支持 LIMIT 语句来选取指定的条数数据, Oracle 可以使用 ROWNUM 来选取。
MySQL分页查询语法如下:
SELECT * FROM table LIMIT [offset,] rows | rows OFFSET offset
- 第一个参数指定第一个返回记录行的偏移量
- 第二个参数指定返回记录行的最大数目
下面我们开始测试查询结果:
SELECT * FROM `user_operation_log` LIMIT 10000, 10
查询3次时间分别为:
- 59 ms
- 49 ms
- 50 ms
这样看起来速度还行,不过是本地数据库,速度自然快点。
换个角度来测试
相同偏移量,不同数据量
SELECT * FROM `user_operation_log` LIMIT 10000, 10
SELECT * FROM `user_operation_log` LIMIT 10000, 100
SELECT * FROM `user_operation_log` LIMIT 10000, 1000
SELECT * FROM `user_operation_log` LIMIT 10000, 10000
SELECT * FROM `user_operation_log` LIMIT 10000, 100000
SELECT * FROM `user_operation_log` LIMIT 10000, 1000000
查询时间如下:
数量第一次第二次第三次10条53ms52ms47ms100条50ms60ms55ms1000条61ms74ms60ms10000条164ms180ms217ms100000条1609ms1741ms1764ms1000000条16219ms16889ms17081ms
从上面结果可以得出结束:数据量越大,花费时间越长
相同数据量,不同偏移量
SELECT * FROM `user_operation_log` LIMIT 100, 100
SELECT * FROM `user_operation_log` LIMIT 1000, 100
SELECT * FROM `user_operation_log` LIMIT 10000, 100
SELECT * FROM `user_operation_log` LIMIT 100000, 100
SELECT * FROM `user_operation_log` LIMIT 1000000, 100
偏移量第一次第二次第三次10036ms40ms36ms100031ms38ms32ms1000053ms48ms51ms100000622ms576ms627ms10000004891ms5076ms4856ms
从上面结果可以得出结束:偏移量越大,花费时间越长
SELECT * FROM `user_operation_log` LIMIT 100, 100
SELECT id, attr FROM `user_operation_log` LIMIT 100, 100
如何优化
既然我们经过上面一番的折腾,也得出了结论,针对上面两个问题:偏移大、数据量大,我们分别着手优化
优化偏移量大问题
采用子查询方式
我们可以先定位偏移位置的 id,然后再查询数据
SELECT * FROM `user_operation_log` LIMIT 1000000, 10
SELECT id FROM `user_operation_log` LIMIT 1000000, 1
SELECT * FROM `user_operation_log` WHERE id >= (SELECT id FROM `user_operation_log` LIMIT 1000000, 1) LIMIT 10
相关阅读
-
什么是网络附加存储 NAS? 网络附加存储的适用场景有哪些
一篇很详细的教程是关于什么是网络附加存储方面的介绍,一起来了解了解吧。 网络附加存储(Network-Attached Storage,简称NAS)是一种基于网络的存储解决方案,允许多个设备通过网络共享存储
-
在线网页制作系统有哪些 网页设计制作网站推荐
IT电脑小知识篇,关于在线网页制作系统有哪些和网页设计制作网站推荐的IT小经验,很不错的方法小知识,建议收藏哦! HTML5多媒体作品以其对各种平台的兼容而见长,目前已获得了广泛的应
-
远程数据库连接慢有哪些原因 数据库连接速度缓慢的解决方法
本文为您带来的是远程数据库连接慢有哪些原因的相关介绍,一起跟随小编看看吧! 数据库连接速度缓慢可能有多种原因,以下是一些可能的原因及其相应的解决方法: 网络延迟 :数据库服
-
Web标准全面解析:构建高质量网站的基石
小编为你介绍Web标准全面解析的IT小经验,一起来了解了解吧。 1. 引言 随着互联网的快速发展,Web技术不断地向前演进,各种浏览器、设备和操作系统纷繁复杂。 为了确保网站在不同环境下都


