1 mysql分页原理
假设数据库表student存在13条数据。
语句1:select * from student limit 9,4
语句2:slect * from student limit 4 offset 9
// 语句1和2均返回表student的第10、11、12、13行
//语句1中的4表示返回4行,9表示从表的第十行开始
//语句2中的4表示返回4行,9表示从表的第十行开始
通过limit和offset 或只通过limit可以实现分页功能
假设 numberperpage 表示每页要显示的条数
pagenumber表示页码
那么 返回第pagenumber页,每页条数为numberperpage的sql语句写法为
语句3:select * from studnet limit (pagenumber-1)*numberperpage,numberperpage
语句4:select * from student limit numberperpage offset (pagenumber-1)*numberperpage
2 mysql limit优化
MySQL limit 操作常用于程序中的分页,但是如果你没有了解过limit的机制和相关优化原理,一旦数据量上升,程序的性能将会惨不忍睹,所以下面总结几种mysql关于limit优化实例,每个实例后对应都会有演示。(演示的数据来自15年暑期实习的p2p流量数据,表数据量约300W行)
1、sql中会范的错误
- select XXX from tableA limit 1000000,10;
上面的语句是取1000000后面的10条记录,但是这样会导致mysql将1000000之前的所有数据全部扫描一次,大量浪费了时间。截图是我扫描100W数据花费的时间,大概是2S多
这在程序中肯定是不可忍受的。
对于mysql,优化limit最重要的一点就是尽量先用主键id的索引到起始位置,然后再截取需要的行数。
2、优化方式
(1)使用记录主键的方式进行优化
limit最大的问题在于要扫描前面不必要的数据,所以可以先对主键的条件做设定,然后记录住主键的位置再取行。
- select * from p2p_20131230 where main_id > 1000000 order by main_id limit 10;
这样执行的结果如下所示,比没有优化前提升了很多倍。
(2)使用子查询进行查询:
- select * from p2p_20131230 where main_id >= (select main_id from p2p_20131230 limit 1000000,1) limit 10;
(3) 使用between关键字
如果在主键id是有序不变的情况下,还可以手动计算between的前后两个条件进行查询,这里我就不上代码了。
总结一下,上面的集中方法都是利用mysql的主键索引进行优化,当然应用中通常很难直接获得索引,基本上都是格局where后的某个条件,这个时候就可以先用条件查询出主键id,然后再用上述方式获取结果集即可。
相关推荐
总结来说,实现高效的MySQL分页查询需要考虑索引优化、使用新的SQL特性,以及借助合适的开发工具。同时,持续关注数据库性能监控,及时调整和优化查询策略,对于保持系统稳定和提升用户体验具有重要意义。
理解分页原理和数据库分页语法,掌握JDBC基本用法,再根据实际需求选择是否使用框架进行优化,是实现高效分页查询的关键。无论是在MySQL还是SQL Server中,正确地实现分页都能显著提升应用性能和用户体验。
在MySQL数据库中,分页是处理大量数据查询时不可或缺的一种技术。它允许用户按需加载数据,而不是一次性获取所有记录,从而提高了用户体验并降低了服务器负载。以下是对分页实现的详细说明: 一、基础概念 分页是将...
### Oracle、SQL、MySQL 实现分页查询方法详解 在数据库操作中,分页查询是一项非常重要的技术,尤其是在处理大量数据时。本文将基于提供的文件信息,深入探讨三种不同的分页查询方法及其在Oracle、SQL Server...
总结来说,易语言结合MySQL数据库的分页查询是通过建立连接、构建分页SQL、执行查询、处理结果和关闭连接等一系列步骤来实现的。理解这些步骤,并结合数据库优化技巧,可以帮助开发者构建出高效、友好的数据展示系统...
不同的数据库系统,如SQL Server、MySQL、Oracle,由于其设计原理和语法的不同,在实现分页功能上也有所差异。下面将详细介绍这三种数据库系统的分页方法。 ### SQL Server 分页 SQL Server 中实现分页主要通过`...
行式引擎按页取数只适用于Oracle,mysql,hsql和sqlserver2008及以上数据库,其他数据库,如access,sqlserver2005,sqlite等必须编写分页SQL。今天我们以Access数据库为例介绍需要写分页SQL的数据库怎样利用行式的...
Node.js结合MySQL实现分页查询是一种常见的数据处理方式,在Web应用中尤为常见。分页可以有效提高页面的响应速度,并优化用户的浏览体验。本文主要介绍了在Node.js环境下,如何使用MySQL数据库实现分页功能。 首先...
分页的基本原理是计算总记录数,确定每页显示的记录数,然后根据当前页码计算出起始和结束的记录位置,最后从数据库中取出这些记录。以下是一个简单的PHP MySQL分页实现步骤: 1. **连接数据库**:使用PHP的`mysqli...
本示例中,我们将探讨如何在WinForm应用程序中实现MySQL数据库的分页功能,这在处理大量数据时非常实用,可以提高用户体验并减少系统资源的消耗。 首先,我们需要在Visual Studio 2010中创建一个新的WinForm项目。...
【JSP+MySQL分页组件】是Web开发中常见的功能,...综上所述,JSP+MySQL分页组件的实现涉及数据库设计、SQL查询、服务器端逻辑以及客户端交互等多个方面。理解并熟练掌握这些知识点,能帮助开发者构建高性能的Web应用。
接下来,我们将详细介绍PHP+MySQL分页的原理及实例应用。 首先,我们需要了解MySQL数据库中实现分页的核心SQL语句——LIMIT子句。在SQL语句中,LIMIT用于限制查询结果的数量,它接受一个或两个数字参数,表示从哪一...
在MyBatis配置文件中引入PageHelper,然后在Mapper接口方法中使用`Page`对象作为参数,MyBatis会自动生成分页SQL。例如: ```java Page<User> selectUsersByPage(Page<User> page); ``` 六、前端展示 前端通常...
本文将详细介绍三种主流数据库(SQL Server、MySQL和Oracle)中的分页SQL语句实现方法。 #### SQL Server 的分页SQL语句实现 SQL Server 支持通过`TOP`关键字来实现分页查询。具体实现方式如下: 1. **查询第M页...
MySQL分页分析原理及提高效率 PERCONA PERFORMANCE CONFERENCE 2009上,来自雅虎的几位工程师带来了一篇”Efficient Pagination Using MySQL“的报告,有很多亮点,本文是在原文基础上的进一步延伸。 首先看一下分页...
sql 分页 针对oracle mysql sqlserver 等数据库的通用类
### ASP与MySQL分页技术详解 #### 一、引言 在Web开发中,当数据量庞大时,一次性展示所有数据不仅会导致页面加载缓慢,还会严重影响用户体验。因此,实现数据的分页显示变得尤为重要。本文将详细介绍如何在ASP...
mysql,oracle,sql server分页总结与比较
1. `generateSQL(query, page, pageSize)`: 根据给定的查询条件、当前页和每页大小生成分页SQL。 2. `fetchData(connection, SQL)`: 使用数据库连接执行SQL并获取数据。 3. `calculateTotalPages(count, pageSize)`:...
本篇将详细讲解MySQL分页的基本原理、语法以及实际应用。 一、分页概念与原理 1. 分页概念:分页是将大范围的数据分割成若干小块,每次查询只返回一部分数据,用户可以逐页浏览,减轻服务器压力,提升页面加载速度...