首页
学习
活动
专区
圈层
工具
发布

mysql千万级分页查询SQL优化

按照下文的方式调整SQL后,耗时800 ms; 关于分页的优化 使用limit分页时的MySQL并不是跳过offset行,而是取offset+N行,然后返回放弃前offset行,返回N行,那当offset...而 count 函数又是必不可少的,因为需要查询总数,以供分页显示总条数及最后一页,所以必须从 count 优化入手 2、 如果技术上优化遇到了瓶颈,或者说 mysql 已经优化到极致,那么能否从业务上解决...此种优化最终实现:列表数据加载 分页组件加载 >40 秒 其他优化思路 通过学习研究发现,mysql innodb 引擎在有索引、有 where 条件的情况下,count 速度并不慢,所以问题一样还出在...1, 通过分析 sql 发现,由于查询条件众多,只是对 where 语句后面的 sql 进行了动态 sql 处理,而 left join 语句没有进行动态 sql 处理,导致不管有几个查询条件,都需要链接...是链接查询限制了 sql 的性能!而不是 count 限制的 sql 的性能!

2.6K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    使用MySQL实现分页查询

    使用MySQL实现分页查询 本文关键字:MySQL、分页查询、真分页、假分页、LIMIT 在项目开发当中,经常要实现分页功能,在面试时也会经常被问到,什么是分页。...在对数据库中的数据进行修改后,要将变更后的数据及时同步到缓存层,在进行数据查询时从缓存层获取。 ? 二、MySQL实现分页 本文将介绍如何通过真分页的方式,每次取出所需数据。...对于不同的数据,实现分页有不同的方式,在MySQL中可以使用LIMIT来限制查询出的数据。 1. LIMIT用法 LIMIT出现在查询语句的最后,可以使用一个参数或两个参数来限制取出的数据。...分页公式 总页数计算 在进行分页之前,我们需要先根据数据总量来得出总页数,这需要用到COUNT函数和向上取整函数CEIL,SQL如下: /* 获得数据总条数 */ SELECT COUNT(*) FROM...以每页10条为例,则前三页的数据应为: 第1页:第1~10条,SQL写法:LIMIT 0,10 第2页:第11~20条,SQL写法:LIMIT 10,10 第3页:第21~30条,SQL写法:LIMIT

    18.8K52

    oracle、mysql 分页查询比较

    1、 Oracle的分页查询语句 分页查询格式: SELECT * FROM ( SELECT A.*, ROWNUM RN FROM (SELECT * FROM TABLE_NAME) A WHERE...ROWNUM = 21控制分页查询的每页的范围。 上面给出的这个分页查询语句,在大多数情况拥有较高的效率。分页的目的就是控制输出结果集大小,将结果尽快的返回。...那么在大部分的情况下,对于分页查询选择NESTED LOOP作为查询的连接方法具有较高的效率(分页查询的时候绝大部分的情况是查询前几页的数据,越靠后面的页数访问几率越小)。...* FROM TABLE_NAME) A WHERE ROWNUM <= 40 ) WHERE RN >= 21 2、 MySQL的分页查询语句 在PhpMyAdmin里执行如下SQL: SELECT...1000000 , 1(6.7732 秒) SELECT pid FROM `cdb_posts` ORDER BY pid LIMIT 1000000 , 1(0.5838 秒) 有网友说如果是MySQL

    3.8K90

    MySQL——优化嵌套查询和分页查询

    ,是因为MySQL不需要在内存中创建临时表来完成这个逻辑上需要两个步骤的查询工作;并且Not exists表示MYSQL优化了LEFT JOIN,一旦它找到了匹配LEFT JOIN标准的行, 就不再搜索了...优化分页查询 在MySQL中做分页查询,MySQL 并不是跳过 offset 行,而是取 offset+N 行,然后返回放弃前 offset 行,返回 N 行,那当 offset 特别大的时候,效率就非常的低下...由此可见MySQL的分页处理并不是十分完美,需要我们在分页SQL上做一些优化,要么控制返回的总页数,要么对超过特定阈值的页数进行 SQL 改写。...第一种优化思路 在索引上完成排序分页的操作,最后根据主键关联回表查询所需要的其他列内容。 画外音:此处涉及到了SQL优化的两个重要概念,索引覆盖和回表,我在前面的文章中详细介绍过这两个概念。...总结 对于嵌套查询和分页查询的优化,归根结底就是遵循SQL优化原则之一——减少回表查询的I/O次数。对于分页查询优化,更建议使用第一种优化方案,性能更好,稳定性更高。 参考 《深入浅出MySQL》

    4.2K21

    oracle、mysql 分页查询比较

    1、 Oracle的分页查询语句 分页查询格式: SELECT * FROM ( SELECT A.*, ROWNUM RN FROM (SELECT * FROM TABLE_NAME) A WHERE...ROWNUM = 21控制分页查询的每页的范围。 上面给出的这个分页查询语句,在大多数情况拥有较高的效率。分页的目的就是控制输出结果集大小,将结果尽快的返回。...那么在大部分的情况下,对于分页查询选择NESTED LOOP作为查询的连接方法具有较高的效率(分页查询的时候绝大部分的情况是查询前几页的数据,越靠后面的页数访问几率越小)。...* FROM TABLE_NAME) A WHERE ROWNUM <= 40 ) WHERE RN >= 21 2、 MySQL的分页查询语句 在PhpMyAdmin里执行如下SQL: SELECT...1000000 , 1(6.7732 秒) SELECT pid FROM `cdb_posts` ORDER BY pid LIMIT 1000000 , 1(0.5838 秒) 有网友说如果是MySQL

    3.7K80

    Oracle总结【SQL细节、多表查询、分组查询、分页】

    前言 在之前已经大概了解过Mysql数据库和学过相关的Oracle知识点,但是太久没用过Oracle了,就基本忘了…印象中就只有基本的SQL语句和相关一些概念….写下本博文的原因就是记载着Oracle一些以前没注意到的知识点...@ e:/crm.sql; 转义字符 有的时候,我们可能会模糊查询一些数据,但是呢,在名称中又有一些特殊的字符。...这里写图片描述 综上所述:在Oracle中使用多表查询性能可能比子查询好一些 ---- Oracle分页 在讲解JDBC的时候,我们就已经讲过Oracle与Mysql的分页问题了….详情可以看我的博文:...那么Oracle分页的思路是这样子的: 先在子查询中获取前n条记录 由于返回的是多行多列,因此我们可以看做成一张表 那么将查询出来的数据放在from字句的后边 外套的查询可以通过where字句来对子查询出来的数据进行过滤...那么我们就可以查询出想要的数据了… 公式: Mysql从(currentPage-1)*lineSize开始取数据,取lineSize条数据 Oracle先获取currentPagelineSize条数据

    3.6K100

    mysql慢查询优化-分页慢查询篇

    前提介绍 为何分页查询在测试环境没事,在生产上几千万的数据就出现了问题 在平时开发时,由于数据量没有那么大,所以测试有时候会不到位,比如用到的分页查询,使用不规范时,数据量越大,查询越慢,而且有 长时间进程不结束...,会导致内存不足等风险 传统分页查询:SELECT c1,c2,cn… FROM table LIMIT n,m MySQL的limit工作原理就是先读取前面n条记录,然后抛弃前n条,读后面m条想要的,...因为要取出所有字段内容,这种需要跨越大量数据块并取出 推荐分页查询方法 通过直接根据索引字段定位后,才取出相应内容,效率自然大大提升。...id from product limit 866613, 20) b ON a.ID = b.id 3、高性能MySQL一书中提到的只读索引方法 优化前SQL: SELECT c1,c2,cn… FROM...而优化后的SQL(子查询那条)只读索引(Cover index)就可以了,然后通过member_id读取需要的列。

    4.3K21

    MySQL学习,详解分页查询(limit)

    limit介绍 limit⽤来限制select查询返回的⾏数,常⽤于分页等操作。...开发过程中,分页我们经常使⽤,分页⼀般有2个参数: page:表⽰第⼏页,从1开始,范围[1,+∞) pageSize:每页显⽰多少条记录,范围[1,+∞) 如:page = 2,pageSize...You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version...下⾯的sql依次为第1页、第2页、第3页、第4页、第5页的数据,如下: mysql> select * from test1 order by b asc limit 0,2; +---+---+ |...[asc|desc]⽤于对查询结果排序,asc:升序,desc:降序,asc|desc可以省 略,默认为asc • limit⽤来限制查询结果返回的⾏数,有2个参数(offset,count),offset

    5.5K20

    MySQL 案例:Limit 分页查询优化

    在 MySQL 支持的 SQL 语法中对此有特殊的支持,开发人员在实现这类功能的时候很方便: select * from xxx limit M,N select * from xxx limit N...可以看到跳过的行数大幅度增长时,SQL 语句的执行时间也会快速增长,原因其实比较简单:在处理 limit M,N 的时候,MySQL 会先拿到 M+N 行结果数据,然后再丢弃 M 行数据,展示之后剩下的...在分页查询的时候,记录上一次查询结果中的主键,然后在 where 条件中添加主键的范围约束。...以上面的查询为例,上次分页查询时的主键是 8000001,那么下次分页的时候,where 条件中添加一个主键约束:id > 8000001,再来看看查询效果: [添加条件之后的效果] 可以发现利用主键来筛选掉上一次分页前的所有数据后再用...总结一下 MySQL 由于本身查询优化器覆盖到的场景不够全,慢查询的原因也千奇百怪,各类业务 SQL 在上线前尽量多覆盖一些场景,确保业务功能安全发布。

    4.9K4432

    【MySQL】:分组查询、排序查询、分页查询、以及执行顺序

    前言 DQL(Data Query Language)是SQL中最重要的语言类型之一,用于查询数据库中表的记录。在日常业务系统中,查询操作频率高于增删改操作。...本文将深入探讨DQL的分组查询、排序查询和分页查询等常见操作,为读者提供全面的DQL查询知识。 一....分页查询 分页操作在业务系统开发时,也是非常常见的一个功能,我们在网站中看到的各种各样的分页条,后台都需要借助于数据库的分页操作。...分页查询是数据库的方言,不同的数据库有不同的实现,MySQL中是LIMIT。 如果查询的是第一页数据,起始索引可以省略,直接简写为 limit 10。 3.3 案例: A....、排序查询和分页查询等常见操作,包括语法、注意事项和实例演示。

    4.1K10

    【Java 进阶篇】SQL分页查询详解

    在本文中,我们将详细介绍SQL中的分页查询,包括基本语法、常见应用场景以及如何在不同数据库管理系统中执行分页查询。 什么是分页查询?...在应用程序中,分页查询通常用于构建数据表格、搜索结果页、新闻文章列表等需要显示大量数据的场景。 基本的SQL分页查询语法 SQL中执行分页查询通常使用LIMIT和OFFSET子句。...注意: 不同的数据库管理系统可能有不同的分页查询语法,后面将介绍不同系统中的具体语法。 MySQL中的分页查询 在MySQL中,可以使用LIMIT和OFFSET来执行分页查询。...PostgreSQL中的分页查询 在PostgreSQL中,可以使用LIMIT和OFFSET来执行分页查询,与MySQL类似。...SQL Server中的分页查询 在SQL Server中,可以使用OFFSET和FETCH子句来执行分页查询。

    2.3K10

    MySQL 慢SQL查询

    慢查询日志主要用来记录在MySQL数据库中执行时间超过指定阈值时间的查询语句。通过慢查询日志查找出效率底下的SQL语句,并根据需要进行优化。...慢查询日志是排查SQL语句性能问题的工具,如果非优化需求不建议开启,开启后会对数据库的性能带来一定影响。----1....在当前实例中开启慢查询日志(重启数据库会失效)# 开启慢查询日志mysql> set global slow_query_log = on;Query OK, 0 rows affected (0.01...查看慢查询日志的记录# 执行查询mysql> select count(*) from sbtest1;+----------+| count(*) |+----------+| 100000 |+...慢查询日志清理# 清理命令[root@VM-4-4-centos mysql]# mysqladmin -uroot -p flush-logs# 查看清理结果[root@VM-4-4-centos mysql

    1.2K80

    MySQL高级查询技巧:分组、聚合、子查询与分页【MySQL系列】

    本文将深入探讨 MySQL 高级查询技巧,重点讲解 GROUP BY、HAVING、各种聚合函数、子查询以及分页查询(LIMIT 语法)的使用。...文章内容涵盖实际应用中最常见的报表需求和分页实现技巧,适合有一定 SQL 基础的开发者进一步提升技能。...一、前置知识回顾 在进入高级部分之前,我们先简要回顾一些 SQL 查询的基本组成部分,便于后续内容的理解: SELECT [字段列表] FROM [表名] WHERE [条件] GROUP BY [分组字段...(LIMIT)详解 在构建分页接口或展示数据列表时,LIMIT 是非常关键的 SQL 工具。...复杂条件过滤、嵌套数据分析 LIMIT 分页列表、Top N 取值 分页优化 大数据分页响应慢时的优化方案 实战建议: 分组前过滤用 WHERE,分组后过滤用 HAVING 复杂统计尽量使用子查询或视图

    91320
    领券