iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >MySQL 分页查询的优化技巧
  • 698
分享到

MySQL 分页查询的优化技巧

MySQL分页查询MySQL分页查询优化 2022-05-20 13:05:18 698人浏览 薄情痞子
摘要

在有分页查询的应用中,包括 LIMIT 和 OFFSET 的查询十分常见,而且几乎每个都会有一个 ORDER BY 子句。如果使用索引排序的话将对性能优化十分有帮助,否则服务端需要做很多文件排序。 一个高频的问题

在有分页查询的应用中,包括 LIMIT 和 OFFSET 的查询十分常见,而且几乎每个都会有一个 ORDER BY 子句。如果使用索引排序的话将对性能优化十分有帮助,否则服务端需要做很多文件排序。

一个高频的问题是 offset 的值过大。如果查询类似 LIMIT 10000, 20,将会产生10020行,并将之前的10000行丢弃,这样的代价很高。假设所有的页使用相同的频次访问,这样的查询将平均扫描一半数据表。为了优化他们,你可以在分页视图中限制最多可访问的页数,或者让大便宜的查询更有效。

一个改善性能简单的技巧是在覆盖索引上进行查询操作而不是整行数据。你可以将结果与完整的行做一次联合然后再获取额外需要的列。这样的效率会更高,例如下面的查询:


SELECT film_id, description FROM sakila.film ORDER BY title LIMIT 50, 5;

如果数据表很大的话,则可以按下面的方式进行优化:


SELECT film.film_id, film.description
FROM sakila.film
	INNER JOIN (
    SELECT film_id FROM sakila.film
    ORDER BY title LIMIT 50, 5)
  ) as lim USING(film_id);

这种“推断联合查询”能够有效工作是因为它使用了索引减少了服务端尽可能少地访问数据行去检查数据。一旦复核要求的行查到了,将他们与对应的数据表的行进行联合查询以获取对应行的其他列。

有些时候也可以将 limit 转换为固定位置的查询,这种方式可以对索引进行范围扫描完成。例如,如果你预先计算一个固定位置的列 称之为 position,可以重写查询如下:


SELECT film_id, description FROM sakila.film
WHERE position BETWEEN 50 AND 54 ORDER BY position;

排序的数据也可以使用类似的方式解决,但是通常会被 GROUP BY操作影响。大部分情况下需要提前计算和存储排序值。

LIMIT 和 OFFSET 真正的问题是在OFFSET,这意味着服务端会把很多数据行丢弃。如果使用一个有序书签来记录下次获取行的位置的话,则可以从上次的位置开始访问接下来的数据。例如,如果你需要对出租记录进行分页,从最新的出租记录开始往回查询,则可以依赖于记录的主键是一直增加的,因此可以对第一页数据这样查询:


SELECT * FROM sakila.rental
ORDER BY rental_id DESC LIMIT 20;

这个查询返回16049到16030之间的数据。接下来的查询可以从之前结束位置开始:


SELECT * FROM sakila.rental
WHERE rental_id < 16030 
ORDER BY rental_id DESC LIMIT 20;

这个技巧不管你从多远的偏移值开始查询都是很有效的。

其他的一些技巧包括使用预先计算的统计值,或者通过联合冗余了主键和排序列的数据表进行查询,这两种方式都是通过空间换取时间的方式提高查询效率。

以上就是Mysql 分页查询的优化技巧的详细内容,更多关于mysql 分页查询的优化的资料请关注自学编程网其它相关文章!

您可能感兴趣的文档:

--结束END--

本文标题: MySQL 分页查询的优化技巧

本文链接: https://www.lsjlt.com/news/10319.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Mysql优化技巧之Limit查询的示例分析
    小编给大家分享一下Mysql优化技巧之Limit查询的示例分析,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!前言在实际业务中对于分页来说是一个比较常见的业务需求。那么就会使用到limit查...
    99+
    2024-04-02
  • MySQL查询优化技巧有哪些
    使用索引:确保数据库表的字段都有合适的索引,这样可以加快查询的速度。避免查询所有字段:只选择需要的字段进行查询,避免查询过多无用字...
    99+
    2024-04-09
    MySQL
  • mysql分页查询如何优化
    这篇文章主要介绍了mysql分页查询如何优化的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇mysql分页查询如何优化文章都会有所收获,下面我们一起来看看吧。 ...
    99+
    2024-04-02
  • PHP查询语句优化技巧分享
    标题:PHP查询语句优化技巧分享 在开发Web应用程序时,优化数据库查询是至关重要的环节,它能够显著提升应用程序的性能和响应速度。在PHP中,通过优化查询语句可以有效地减少数据库负担,...
    99+
    2024-04-02
  • mysql优化之慢查询分析+explain命令分析+优化技巧总结
    分析慢查询 1.查看慢SQL是否启用,查看命令:show variables like 'log_slow_queries';  如果结果为ON则是开启了,如果为OFF则表示禁用了。 2.开启...
    99+
    2023-02-18
    mysql优化 mysql慢查询分析 mysqlexplain命令分析 mysql优化技巧总结
  • MySQL中怎么优化查询分页
    这期内容当中小编将会给大家带来有关MySQL中怎么优化查询分页,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。  MySQL查询分页怎么优化  如果你的数据量有几十万条,用...
    99+
    2024-04-02
  • MySQL中怎么优化分页查询
    今天就跟大家聊聊有关MySQL中怎么优化分页查询,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。 分页查询方法:在MySQL中,分页查询一般...
    99+
    2024-04-02
  • Oracle序列号查询优化技巧分享
    Oracle序列号查询是在数据库中生成唯一的递增数字,通常用于给表的主键赋值或者记录数据插入的顺序。然而,在实际应用中,当数据库中表的数据量较大时,查询序列号可能会变得比较耗时。为了优...
    99+
    2024-03-02
    优化 oracle 序列号
  • MySQL查询中分页的思路和优化
    这篇文章主要介绍“MySQL查询中分页的思路和优化”,在日常操作中,相信很多人在MySQL查询中分页的思路和优化问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”MySQL查询中...
    99+
    2024-04-02
  • Mysql根据时间查询日期的优化技巧
    例如查询昨日新注册用户,写法有如下两种: EXPLAIN select * from chess_user u where DATE_FORMAT(u.register_time,'...
    99+
    2024-04-02
  • mysql排序分页优化的技巧有哪些
    以下是一些优化MySQL排序和分页的技巧:1. 使用索引:在排序和分页查询中,合适的索引可以大大提高查询性能。确保在排序和分页的列上...
    99+
    2023-10-23
    mysql
  • Couchbase的查询优化技巧有哪些
    使用索引:在Couchbase中,可以为需要经常查询的字段创建索引,以提高查询性能。确保在设计文档和查询语句时考虑到索引的使用。...
    99+
    2024-04-09
    Couchbase
  • Couchbase的查询优化有哪些技巧
    使用索引:在Couchbase中,可以通过创建适当的索引来加快查询速度。 确保在经常使用的字段上创建索引,以便能够快速地定位到需...
    99+
    2024-04-02
  • Django查询优化技巧有哪些
    使用select_related和prefetch_related方法来减少数据库查询次数,提高性能。 对查询结果进行缓存,避免重...
    99+
    2024-03-06
    Django
  • mysql分页查询优化的方法是什么
    MySQL分页查询的优化方法包括:1. 使用索引:在进行分页查询时,使用合适的索引可以大大提高查询性能。可以创建适当的索引,以确保查...
    99+
    2023-10-08
    mysql
  • MySQL 查询技巧
    1)获取指定偏移量的数据SELECT * FROM alarm LIMIT 0,9; SELECT * FROM alarm LIMIT 9 OFFSET 0; (在mysql 5以后支持这...
    99+
    2024-04-02
  • PostgreSQL中的查询优化技巧有哪些
    使用索引:确保表中经常用于查询的列上有合适的索引,可以大大提高查询性能。 避免全表扫描:尽量避免对整个表进行扫描,可以通过添加条件...
    99+
    2024-04-09
    PostgreSQL
  • sql分页查询如何优化
    优化 SQL 分页查询的方法有很多,以下是一些常见的优化策略:1. 使用索引:为要查询的列创建合适的索引,可以大大提高查询速度。尤其...
    99+
    2023-09-20
    sql
  • MySQL千万级数据查询的优化技巧及思路
    随着数据量的不断增长,MySQL千万级数据查询的优化问题也日益引人注目。在这篇文章中,我们将深入探讨MySQL千万级数据查询优化的方法和技巧,以帮助开发者更好地优化MySQL性能。 一、数据库设计 数据库设计是优化查询性能的关键,以下是一些...
    99+
    2023-09-03
    数据库 mysql java
  • MySQL数据库查询性能优化的4个技巧干货
    目录前言SQL的执行频率慢查询日志show profiles详情分析explain执行计划1、ID参数2、select_type参数3、type参数前言 MySQL性能优化是一个老生...
    99+
    2022-11-13
    MySQL查询性能优化 MySQL数据库查询
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作