数据库分页性能优化的几个常用策略

简介: 偶然看了几篇关于数据库分页性能优化的文章。概括起来主要有以下几个策略。 1,缓存结果 缓存有资源消耗,命中率和数据一致性等问题,其利弊需要根据使用场景进行权衡。 2,利用索引迅速跳过offset之前的记录 对单个分页请求来说,一页的返回记录数通常很少,但要跳过的记录数可能会非常多。

偶然看了几篇关于数据库分页性能优化的文章。概括起来主要有以下几个策略。

1,缓存结果
缓存有资源消耗,命中率和数据一致性等问题,其利弊需要根据使用场景进行权衡。

2,利用索引迅速跳过offset之前的记录
对单个分页请求来说,一页的返回记录数通常很少,但要跳过的记录数可能会非常多。如何快速跳过这些offset之前的记录是优化的关键。可以用下面的办法:
 i,对查询结果进行排序(比如:order by id)
 ii,排序的列上有索引并且要让执行计划使用这个索引
 iii,提供排序的列在该页中的值范围以便能让索引扫描快速定位(比如:id > 10000)
然而如和得到排序的列在该页中的值范围呢?两个办法,一是在上次查询时预先存下来,这样做性能最好,但应用程序必须要一起修改。二是可以用一个子查询单独获取,这个子查询由于只需要得到排序列的值而不是所有的细节,所以有可能找到比直接让主查询过滤效率更高的执行计划。

3,减少应用对大offset的分页需求
如果查询的总结果数非常大,用户不太可能特别关心很远的那些记录。所以不需要提供给用户直接跳转到任意页面的能力。比如可以像google那样,只提供前10页的链接,10页以外的页面需要用户挨个翻页。

参考:
http://blog.163.com/digoal@126/blog/static/163877040201411152640383/
http://www.orczhou.com/index.php/2009/03/four-way-pager-display/
http://www.111cn.net/database/mysql/51004.htm

 

相关文章
|
1月前
|
存储 NoSQL Redis
【Redis】利用Redis List实现数据库分页快速查询
【Redis】利用Redis List实现数据库分页快速查询
83 0
|
1月前
|
存储 缓存 NoSQL
利用Redis List实现数据库分页快速查询的有效方法
利用Redis List实现数据库分页快速查询的有效方法
|
1月前
|
存储 搜索推荐 关系型数据库
深度探讨数据库索引的数据结构及优化策略
深度探讨数据库索引的数据结构及优化策略
|
3月前
|
关系型数据库 MySQL 数据库
深入MySQL数据库进阶实战:性能优化、高可用性与安全性
深入MySQL数据库进阶实战:性能优化、高可用性与安全性
133 0
|
3月前
|
缓存 数据库 索引
高效后端开发:数据库优化策略详解
数据库优化是后端开发中不可或缺的一部分。本文将从多个方面详细阐述数据库优化策略,包括数据表设计、索引优化、查询性能优化等。通过本文的学习,读者可以了解如何优化数据库,提升后端应用性能和稳定性。
69 1
|
16天前
|
SQL 关系型数据库 MySQL
轻松入门MySQL:深入学习数据库表管理,创建、修改、约束、建议与性能优化(3)
轻松入门MySQL:深入学习数据库表管理,创建、修改、约束、建议与性能优化(3)
|
16天前
|
存储 关系型数据库 MySQL
MySQL数据库性能大揭秘:表设计优化的高效策略(优化数据类型、增加冗余字段、拆分表以及使用非空约束)
MySQL数据库性能大揭秘:表设计优化的高效策略(优化数据类型、增加冗余字段、拆分表以及使用非空约束)
|
3月前
|
SQL 关系型数据库 MySQL
后端接口性能优化分析-数据库优化(上)
后端接口性能优化分析-数据库优化
115 0
|
3月前
|
SQL 关系型数据库 MySQL
后端接口性能优化分析-数据库优化(下)
后端接口性能优化分析-数据库优化
68 1
|
1月前
|
存储 缓存 负载均衡
数据库性能优化(查询优化、索引优化、负载均衡、硬件升级等方面)
数据库性能优化(查询优化、索引优化、负载均衡、硬件升级等方面)