首页

文章

mysql 数据量大的表如何做分页查询

发布网友 发布时间:2022-04-19 21:50

我来回答

2个回答

懂视网 时间:2022-04-07 19:25

mysql分页查询的方法:

简述

  • 通常在MySQL中通过limit #{limit},#{offset}来进行分页查询。

  • 当表中记录较多且页数(#{limit})较大时,分页查询效率变慢。

  • 变慢的原因时,分页查询时,会先查询出limit + offset条记录,然后截取后面的offset记录。

  • 本文以实际1.4亿的表big_table为例,记录如何优化分页查询。

  • 测试说明

  • 测试表:big_table,数据量:1.4亿。

  • 原始SQL(4500ms)

    -- 原始分页查询,耗时:4500ms
    select * 
    from big_table
    limit 2000000,10;

    慢的原因:

    1、查询条件为*

    2、limit = 2000000太大

    优化一(推荐):用具体字段代替*(1600ms)

    -- 用明确字段代替*,耗时:1600ms
    select id,uid,media_id,media_name,news_id,comment 
    from big_table
    limit 2000000,10;

    优化二:先查寻索引(450ms)

    -- 方法1:先对索引进行分页查询,耗时:450ms
    select * from big_table AS h inner join
     (select id from big_table
     limit 2000000,10) AS ss 
     on h.id = ss.id;
    -- 方法2:先查询出起始位置的索引,耗时:450ms
    select * from big_table
    where id > (
    select id from big_table limit 2000000,1
    )
    limit 10;

    优化三:between … and(5ms)

    限制:id必须是连续递增的。

    -- 上一页保留最后一条记录所在id,耗时:5ms
    select * from big_table
    where id between 4882489 and 4882489 + 10 ;

    优化四(推荐):保留上一页记录所在id(5ms)

    限制:需要保留上一页的最后一条记录所在id

    -- 上一页需要保留最后一条记录所在id,耗时:5ms
    select * from big_table
    where id > 4882488
    limit 10;

    更多相关免费学习推荐:mysql教程(视频)

    热心网友 时间:2022-04-07 16:33

    直接用limit start, count分页语句, 也是我程序中用的方法:
    select * from proct limit start, count
    当起始页较小时,查询没有性能问题,我们分别看下从10, 100, 1000, 10000开始分页的执行时间(每页取20条), 如下:
    select * from proct limit 10, 20 0.016秒
    select * from proct limit 100, 20 0.016秒
    select * from proct limit 1000, 20 0.047秒
    select * from proct limit 10000, 20 0.094秒
    我们已经看出随着起始记录的增加,时间也随着增大, 这说明分页语句limit跟起始页码是有很大关系的,那么我们把起始记录改为40w看下(也就是记录的一般左右) select * from proct limit 400000, 20 3.229秒
    再看我们取最后一页记录的时间
    select * from proct limit 866613, 20 37.44秒
    难怪搜索引擎抓取我们页面的时候经常会报超时,像这种分页最大的页码页显然这种时
    间是无法忍受的。
    从中我们也能总结出两件事情:
    1)limit语句的查询时间与起始记录的位置成正比
    2)mysql的limit语句是很方便,但是对记录很多的表并不适合直接使用。
    玉米仁子饭产自哪里 中国期货交易所的交易品种有哪些? 历史要怎么读,有啥诀窍 高中历史诀窍 年终会活动策划方案 深度解析:第一财经回放,探索财经新风向 逆水寒手游庄园怎么邀请好友同住 逆水寒手游 逆水寒不同区可以一起组队吗? 逆水寒手游 逆水寒怎么进入好友世界? 逆水寒手游 逆水寒怎么去别人的庄园? 使用puppeteer实现将htmll转成pdf 内卷时代下的前端技术-使用JavaScript在浏览器中生成PDF文档 【译】将HTML转为PDF的几种实现方案 变形金刚08动画怎么样 变形金刚08动画的问题 变形金刚08动画日语版剧情介绍 高分!换显卡nvidia控制面板被我卸了,重新安装显卡驱动后没了nvidia控... 我的nvidia控制面板被卸载了 怎么找回啊 卸载后 这个画面看着很奇怪_百 ... 李卓彬工作简历 林少明工作简历 广东工业职业技术学院怎么样 郑德涛任职简历 唐新桂个人简历 土地入股的定义 ups快递客服电话24小时 贷款记录在征信保留几年? 安徽徽商城有限公司公司简介 安徽省徽商集团新能源股份有限公司基本情况 安徽省徽商集团有限公司经营理念 2019哈尔滨煤气费怎么有税? 快手删除的作品如何恢复 体育理念体育理念 有关体育的格言和理念 什么是体育理念 万里挑一算彩礼还是见面礼 绿萝扦插多少天后发芽 绿萝扦插多久发芽 扦插绿萝多久发芽 炖牛排骨的做法和配料 网络诈骗定罪标准揭秘 “流水不争先”是什么意思? mc中钻石装备怎么做 为什么我的MC里的钻石块是这样的?我想要那种。是不是版本的问题?如果是... 带“偷儿”的诗句 “君不见巴丘古城如培塿”的出处是哪里 带“奈何”的诗句大全(229句) 里翁行()拼音版、注音及读音 带“不虑”的诗句 “鲁肃当年万人守”的出处是哪里 无尘防尘棚 qq聊天记录怎么才能彻底删除,为什么我的电手机上... MySql中查询语句实现分页功能 结合MySQL数据库,如何实现分页功能? mysql如何做分页查询? 考摩托车驾驶证一般是多少钱左右? 摩托车驾驶证怎么考和考试流程 现在摩托车驾照怎么考 摩托车驾驶证如何考? 考摩托车驾照都要走哪些程序 摩托车驾驶证怎么考? 摩托车驾照考试流程 如何考取摩托车驾驶证 考摩托车驾驶证怎么考 想考摩托车驾照大概走什么流程? 考摩托车驾照的流程 摩托车考驾照该怎么考,需要什么流程? 西昌那里能办摩托车驾照? 西昌航天驾驶可以考摩托驾照吗 西昌有没有考摩托驾照 wpsword怎么做组织架构图 Mysql分页查询 Mysql 数据库怎么实现分页,要说的通俗一点儿 mysql分页查询语句怎么写 mysql 数据库 分表后 怎么进行分页查询? mysql数据库分页 mysql里分页查询怎么写 mysql如何实现分页 mybatis+mysql怎么分页查询 mysql按条件分页查询的语句怎么写啊? mysql与oracle的分页查询语句? oracle和mysql分页查询问题 求教,mysql千万级数据多表查询做分页该如何优化 苹果12怎么显示手机电量 奥币等于多少人民币? 1奥币等于多少人民币 现在澳币对人民币是多少 澳币如何换算成人民币? 100澳币换算成人民币是多少钱? 5350奥币等于多少人民币? 1800澳币多少人民币
    声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com