前言
【PS:原文手打,转载说明出处,博客园】
看过一堆的百度,最终还是自己做了一次实验,本文基于Mysql5.7.17版本,Mysql引擎为InnoDB,编码为utf8,排序规则为utf8_general_ci
网络搜索查询语句
Sql分页查询基于LIMIT,如下:
select * from SysTestUser order by Id LIMIT 10; select * from SysTestUser order by Id LIMIT 1000,10;
网络上各说风云,有下面几种写法说速度快
1:如下子查询
select * from SysTestUser where Id in( select Id from (select Id from SysTestUser order by Id LIMIT 1000,10) t );
2:如下图
select Id from SysTestUser order by Id LIMIT 1000,10; select * from SysTestUser where id in(1000,1001,1002,1003,1004,1005,1006,1007,1008,1009) order by Id ;
3:如下
select * from SysTestUser where id>=(select id from SysTestUser order by id limit 1000,1) limit 10;
实践出真知
我们新建一张表(PS:不要在意每个字段类型,这张表只是测试使用。)
-- ---------------------------- -- Table structure for SysTestUser -- ---------------------------- DROP TABLE IF EXISTS `SysTestUser`; CREATE TABLE `SysTestUser` ( `Id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'Id', `UserName` varchar(50) NOT NULL COMMENT '姓名', `Sex` tinyint(4) NOT NULL COMMENT '性别', `Height` decimal(3,2) NOT NULL COMMENT '身高', `Age` smallint(6) NOT NULL COMMENT '年龄', `Brithday` datetime NOT NULL COMMENT '生日', `CreationTime` datetime NOT NULL COMMENT '创建时间', `LastModificationTime` datetime NOT NULL COMMENT '修改时间', `IsDeleted` bit(1) NOT NULL COMMENT '是否软删除', PRIMARY KEY (`Id`) ) ENGINE=InnoDB AUTO_INCREMENT=35 DEFAULT CHARSET=utf8 COMMENT='测试用户表';