元宵节的由来与传说,昆明世纪城二手房,茶多酚的成果与作用
>>号外:存眷“Java精选”公众号,复原“口试资料”,免费领取资料!“Java精选口试题”小法式,3000+ 道口试题在线刷,最新、最全 Java 口试题!
当必要从内容库查询的表有上万笔记录的时候,一次性查询所有效果会变得很慢,稀奇是跟着内容量的增加稀奇明显,这时必要使用分页查询。对于内容库分页查询,也有很多种方法和优化的点。下面简洁说一下我知道的一些方法。
准备工作
为了对下面列举的一些优化进行测试,下面针对已有的一张表进行阐明。
表名:order_history
描述:某个买卖的订单汗青表
主要字段:unsigned int id,tinyint(4) int type
字段环境:该表一共37个字段,不包括text等大型内容,最大为varchar(500),id字段为索引,且为递增。
内容量:5709294
MySQL版本:5.7.16
线下找一张百万级的测试表可不容易,如果必要本身测试的话,能够写shell剧本什么的插入内容进行测试。
以下的 sql 所有语句执行的情况没有产生改变,下面是根基测试效果:
select count(*) from orders_history;
返回效果:5709294
三次查询时间分别为:
8903 ms
8323 ms
8401 ms
一般分页查询
一般的分页查询使用简洁的 limit 子句就能够实现。limit 子句声明如下:
SELECT * FROM table LIMIT [offset,] rows | rows OFFSET offset
LIMIT 子句能够被用于指定 SELECT 语句返回的记录数。需注意以下几点:
第一个参数指定第一个返回记录行的偏移量,注意从0起头
第二个参数指定返回记录行的最大数目
如果只给定一个参数:它透露返回最大的记录行数目
第二个参数为 -1 透露检索从某一个偏移量到记录集的竣事所有的记录行
初始记录行的偏移量是 0(而不是 1)
下面是一个应用实例:
select * from orders_history where type=8 limit 1000,10;
该条语句将会从表 orders_history 中查询offset: 1000起头之后的10条内容,也便是第1001条到第1010条内容(1001 <= id <= 1010)。
内容表中的记录默认使用主键(一般为id)排序,上面的效果相当于:
select * from orders_history where type=8 order by id limit 10000,10;
三次查询时间分别为:
3040 ms
3063 ms
3018 ms
针对这种查询方式,下面测试查询记录量对时间的影响:
select * from orders_history where type=8 limit 10000,1;select * from orders_history where type=8 limit 10000,10;select * from orders_history where type=8 limit 10000,100;select * from orders_history where type=8 limit 10000,1000;select * from orders_history where type=8 limit 10000,10000;
三次查询时间如下:
查询1笔记录:3072ms 3092ms 3002ms
查询10笔记录:3081ms 3077ms 3032ms
查询100笔记录:3118ms 3200ms 3128ms
查询1000笔记录:3412ms 3468ms 3394ms
查询10000笔记录:3749ms 3802ms 3696ms
另外我还做了十来次查询,从查询时间来看,根基能够确定,在查询记录量低于100时,查询时间根基没有差距,跟着查询记录量越来越大,所破费的时间也会越来越多。
针对查询偏移量的测试:
select * from orders_history where type=8 limit 100,100;select * from orders_history where type=8 limit 1000,100;select * from orders_history where type=8 limit 10000,100;select * from orders_history where type=8 limit 100000,100;select * from orders_history where type=8 limit 1000000,100;
本文地址:http://www.wbwb.net/bianchengyuyan/218217.html 转载请注明出处!