`
zhoushu126
  • 浏览: 81659 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

mysql如何实现高效分页(转)

阅读更多

 

mysql如何实现高效分页

http://www.mianwww.com/html/2012/01/12747.html

MySQL数据库优化处理实现千万级快速分页

http://qianxunniao.iteye.com/blog/1333072

MySQL的分页的优化

http://blog.csdn.net/yueliangdao0608/article/details/3130442

 

转载

先看一下分页的基本原理(我拿的是CSDN那个百万级数据库来测试!):

SELECT * FROM `csdn` ORDER BY id DESC LIMIT 100000,2000;
耗时: 0.813ms

分析:对上面的mysql语句说明:limit 100000,2000的意思扫描满足条件的102000行,扔掉前面的100000行,返回最后的2000行。

问题就在这里,如果是limit 100000,20000,需要扫描120000行,在一个高并发的应用里,每次查询需要扫描超过100000行,性能肯定大打折扣。

在《efficient pagination using mysql》中提出的clue方式。

利用clue方法,给翻页提供一些线索,比如还是SELECT * FROM `csdn` order by id desc,按id降序分页,每页2000条,当前是第50页,当前页条目id最大的是102000,最小的是100000。如果我们只提供上一页、下一页 这样的跳转(不提供到第N页的跳转)。

那么在处理上一页的时候SQL语句可以是:
SELECT * FROM `csdn` WHERE id<=102000 ORDER BY id DESC LIMIT 2000; #上一页
耗时:0.015ms

处理下一页的时候SQL语句可以是:
SELECT * FROM `csdn` WHERE id>102000 ORDER BY id ASC LIMIT 2000; #下一页
耗时:0.015ms

这样,不管翻多少页,每次查询只扫描20行。效率大大提高了!

但是,这样分页的缺点是只能提供上一页、下一页的链接形式。

分享到:
评论

相关推荐

    高效的MySQL分页

    本篇文章将探讨如何在MySQL中实现高效的分页,以及相关工具和源码的使用。 首先,我们来了解分页的基本原理。在SQL中,最简单的分页查询通常使用`LIMIT`和`OFFSET`关键字。例如,如果我们想要获取第2页的数据,每页...

    mysql存储过程实现分页

    ### MySQL存储过程实现分页 #### 背景与需求 在数据库操作中,分页是一种常见的需求,尤其是在处理大量数据时。通过分页技术,可以有效地减少每次...总之,利用MySQL存储过程实现分页是一个非常实用且高效的方法。

    mysql+spring mvc 实现分页

    本篇将详细探讨如何利用MySQL和Spring MVC来实现分页功能,以及在这个过程中涉及到的相关知识点。 一、MySQL数据库分页 在MySQL中,分页主要通过`LIMIT`和`OFFSET`关键字实现。`LIMIT`用于指定返回结果的数量,而`...

    Oracle,SQl,MySql实现分页查询

    **MySQL实现** MySQL 也支持 `LIMIT` 和 `OFFSET`,可以通过这种方式实现分页。 ```sql SELECT * FROM TestTable WHERE ID NOT IN (SELECT ID FROM TestTable LIMIT 20 OFFSET 20) ORDER BY ID ``` **性能分析** ...

    C++实现MySQL分页查询

    本篇文章将深入探讨如何利用C++实现MySQL的分页查询功能,这对于处理大量数据时提高系统性能和用户体验至关重要。 首先,我们需要引入MFC(Microsoft Foundation Classes)库,这是一个由Microsoft为Windows平台...

    winform mysql 分页

    本示例中,我们将探讨如何在WinForm应用程序中实现MySQL数据库的分页功能,这在处理大量数据时非常实用,可以提高用户体验并减少系统资源的消耗。 首先,我们需要在Visual Studio 2010中创建一个新的WinForm项目。...

    JDBC分页 物理分页 mysql实现

    在数据库操作中,分页是一种常见的功能,它用于在...综上所述,JDBC配合MySQL的`LIMIT`和`OFFSET`可以实现高效的物理分页。在开发过程中,应根据实际情况选择合适的分页策略,同时注意性能优化,以提供流畅的用户体验。

    易语言MYSQL数据库分页查询

    易语言作为一款中国本土化的编程语言,提供了与MySQL数据库交互的能力,使得开发者能够轻松实现数据库的分页查询功能。本文将详细讲解如何在易语言中进行MySQL数据库的分页查询,并探讨相关技术点。 首先,我们要...

    mysql 分页例子

    MySQL 分页是数据库查询中非常常见的一种操作,特别是在网页或者应用程序中展示大量数据时,为了提高用户体验,通常会采用分页的方式将数据分批显示。本篇将详细讲解MySQL分页的基本原理、语法以及实际应用。 一、...

    accss, mysql asp通用分页自定义分页样式

    这里的"accss,mysql,asp通用分页,自定义分页样式"就是一个关于如何在ASP(Active Server Pages)环境下,结合Access和MySQL数据库实现分页功能,并且自定义分页样式的主题。 首先,让我们从数据库层面理解。...

    MySql初学者实现的分页代码

    本教程将针对MySQL初学者,介绍如何实现简单的分页功能。 分页查询的核心在于合理地使用SQL的LIMIT和OFFSET子句。LIMIT用于限制返回结果的数量,OFFSET则用于跳过前面的指定行数。一个基本的分页查询语句结构如下:...

    delphi+mysql实现分页显示

    本教程将深入探讨如何在Delphi环境中,利用MySQL数据库实现DBGrid组件上的分页显示功能。 首先,我们需要在Delphi项目中设置与MySQL数据库的连接。这通常通过ADO(ActiveX Data Objects)或ODBC(Open Database ...

    关于Mysql分页的两种方法,假分页和limit分页

    LIMIT关键字与ORDER BY一起使用,可以实现高效的数据分页。例如,`SELECT * FROM table ORDER BY column LIMIT offset, limit` 这个SQL语句会返回从`offset`位置开始的`limit`条记录。这种方式在数据量较小的情况下...

    mySql与oracle分页技术

    MySQL提供了`LIMIT`子句来实现分页查询。`LIMIT m, n`语句用于限制查询结果的数量,其中`m`是起始索引,`n`是返回的记录数。由于在MySQL中索引是从0开始的,所以如果我们要获取第二页的数据(每页显示10条记录),`...

    SSH+Mysql无刷新分页实例

    在这个"SSH+Mysql无刷新分页实例"中,我们将探讨如何利用SSH框架与MySQL数据库实现网页的无刷新分页功能,从而提高用户体验。 首先,SSH框架中的Spring负责控制层,它提供依赖注入(Dependency Injection,DI)和...

    Swing+MySQL实现简单分页

    在本文中,我们将深入探讨如何使用Java Swing作为前端界面,并结合MySQL数据库实现简单的分页功能。Swing是Java提供的一种轻量级GUI工具包,它允许开发者创建丰富的用户界面,而MySQL则是广泛应用的关系型数据库系统...

    ssm框架-mysql的简单分页

    本项目重点在于使用SSM框架实现MySQL数据库的简单分页功能,这对于处理大数据量的查询场景至关重要,可以有效提升系统性能。 首先,我们来探讨SSM框架的核心组成部分: 1. **Spring**:这是一个全面的轻量级容器,...

    MySql 分页存储过程以及代码调用

    总结来说,MySQL的分页存储过程提供了一种高效、可复用的方式来处理分页查询,减少了直接使用OFFSET可能导致的性能问题。通过创建存储过程并在应用程序中调用,我们可以更好地控制分页逻辑,提高查询速度,提升用户...

    MySQL分页实现

    为了解决这个问题,可以使用`ROW_NUMBER()`函数(MySQL 8.0及以上版本支持)或者自连接来实现更高效的分页。 - **使用`ROW_NUMBER()`** ```sql WITH cte AS ( SELECT *, ROW_NUMBER() OVER (ORDER BY some_...

    PHP+MYSQL分页代码

    本主题“PHP+MYSQL分页代码”着重讲解如何在PHP后端和MySQL数据库配合下实现高效、实用的分页功能。下面我们将深入探讨相关知识点。 1. **SQL查询与LIMIT子句**: 在MySQL中,`LIMIT`子句用于在查询结果集中限制...

Global site tag (gtag.js) - Google Analytics