前言

【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='测试用户表';
View Code

相关文章:

  • 2022-01-01
  • 2022-01-01
  • 2022-01-01
  • 2022-01-01
  • 2021-08-22
猜你喜欢
  • 2022-12-23
  • 2021-05-26
  • 2021-11-29
  • 2022-12-23
  • 2022-01-01
  • 2022-01-04
  • 2021-09-24
相关资源
相似解决方案