当前位置: 首页 > news >正文

mysql limit 重复_mysql limit 翻页数据重复的问题

0.背景

Mysql版本:5.7.

1.出问题原因

在MySql5.6开始,limit加入了一个新特性:LIMIT Query Optimization。假设你写了这样一个sql:

select * from my_table limit 10,10;

它是符合优化原则的:

MySQL sometimes optimizes a query that has a LIMIT row_count clause and no HAVING clause:

纵览所有的优化原则,发现与我们最普通的情况有关系的也只有这一条:

If an index is not used for ORDER BY but a LIMIT clause is also present, the optimizer may be able to avoid using a merge file and sort the rows in memory using an in-memory filesort operation.

意即:如果索引未用于ORDER BY,但也存在LIMIT子句,则优化器可能能够避免使用合并文件,并使用内存中文件排序操作对内存中的行进行排序。 再有和我们有点关系的可能也就是:

If you select only a few rows with LIMIT, MySQL uses indexes in some cases when normally it would prefer to do a full table scan.

意即:如果您只需要查出几行,MySQL会因为避免全表扫描而在某些情况下使用索引。

MySQL的优化规则很复杂,如果你不明确指定一个不重复的用于order by列,数据库并不保证每一次排序都是一致的,也就是说分页内容会出现重复的可能性。

分页是建立在排序的基础上,进行了数量范围分割。排序是数据库提供的功能,而分页却是衍生的出来的应用需求。

故解决问题的方式就很明了了。

2.解决方法

select * from my_table order by id limit 10,10 ;

3.拓展阅读

相关文章:

  • BPEL中的partnerlink和partnerlinktype
  • jdbc连接mysql的步骤_JDBC链接数据库的几个步骤
  • 介绍一种全新的哲学思想
  • linux mysql 导入数据库脚本_思维导图学 Linux Shell攻略之干货篇 mysql数据库脚本管理系统...
  • 哲学作为一门学说的可能
  • 批处理修改mysql密码_批处理脚本一键重置mysql的root密码
  • mysql 存储过程查询条数_mysql存储过程,查询多个重复的数据数据出现次数
  • 哲学与哲学的未来
  • 电脑命令执行mysql sql文件路径_MySQL命令执行sql文件的两种方法
  • 解 冻 哲 学
  • html网页内容和打印预览不同_分享8款网站开发中最好用的打印页面插件
  • 链接mysql 504_phpMyAdmin错误代码:504 MySQL查询
  • 做网络安全为啥非要抓服务器
  • js字符串最大长度_JS 实现两个大数相加?
  • 获取网站的实时股票数据
  • [ 一起学React系列 -- 8 ] React中的文件上传
  • 【译】React性能工程(下) -- 深入研究React性能调试
  • android图片蒙层
  •  D - 粉碎叛乱F - 其他起义
  • Docker容器管理
  • gcc介绍及安装
  • JAVA_NIO系列——Channel和Buffer详解
  • Joomla 2.x, 3.x useful code cheatsheet
  • Phpstorm怎样批量删除空行?
  • SQLServer插入数据
  • Terraform入门 - 1. 安装Terraform
  • 从零开始的webpack生活-0x009:FilesLoader装载文件
  • 力扣(LeetCode)22
  • 前端工程化(Gulp、Webpack)-webpack
  • 小程序、APP Store 需要的 SSL 证书是个什么东西?
  • 学习HTTP相关知识笔记
  • k8s使用glusterfs实现动态持久化存储
  • Play Store发现SimBad恶意软件,1.5亿Android用户成受害者 ...
  • 翻译 | The Principles of OOD 面向对象设计原则
  • ​TypeScript都不会用,也敢说会前端?
  • ​软考-高级-信息系统项目管理师教程 第四版【第14章-项目沟通管理-思维导图】​
  • ### Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLTr
  • #NOIP 2014# day.1 T3 飞扬的小鸟 bird
  • #宝哥教你#查看jquery绑定的事件函数
  • $.each()与$(selector).each()
  • (1)Map集合 (2)异常机制 (3)File类 (4)I/O流
  • (7)STL算法之交换赋值
  • (八)c52学习之旅-中断实验
  • (八十八)VFL语言初步 - 实现布局
  • (官网安装) 基于CentOS 7安装MangoDB和MangoDB Shell
  • (黑马出品_高级篇_01)SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式
  • (删)Java线程同步实现一:synchronzied和wait()/notify()
  • (转)Unity3DUnity3D在android下调试
  • .net core控制台应用程序初识
  • .NetCore实践篇:分布式监控Zipkin持久化之殇
  • .NET命令行(CLI)常用命令
  • .pings勒索病毒的威胁:如何应对.pings勒索病毒的突袭?
  • /usr/local/nginx/logs/nginx.pid failed (2: No such file or directory)
  • ?.的用法
  • @column注解_MyBatis注解开发 -MyBatis(15)