为了对下面列举的一些优化进行测试,下面针对已有的一张表进行说明。
-
表名: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
开始 -
第二个参数指定返回记录行的最