`
1028826685
  • 浏览: 938454 次
  • 性别: Icon_minigender_1
  • 来自: 重庆
社区版块
存档分类

Mysql 千万级数据分页优化

 
阅读更多

     在使用mysql数据库查询分页时,常用查询分页 limit 在小数据量查询ok熟读非常快 ,但是在大表数据查询时候性能非常有限这和limit本身设计相关好了下面介绍几种常用limit分页查询优化方案。

  

  首先使用储存过程向数据库中插入1000w数据,脚本如下

 

   

DROP PROCEDURE if exists insertdata;

CREATE PROCEDURE insertdata()
begin

declare yourid int;
set yourid = 1;

while yourid<1000001 do


insert into student(name,age) VALUES ('ly',10);
set yourid=yourid+1;

end while;

end 

call insertdata();

 

   1000w数据脚本:

     链接:http://pan.baidu.com/s/1kU9ro0Z 密码:vfqe

 

    执行时间非常长,慢慢等待吧。

    

   常用方案:

     使用explan 差sql执行过程

 

EXPLAIN SELECT SQL_NO_CACHE * from student   LIMIT 90000,10;

   分析:查询过程没有使用到索引 



 执行时间:0.038s

  

    优化方案一:

      

SELECT  * from student where id>=120000  LIMIT 10;

    

    or  

    

SELECT * from student where id>=(
	SELECT id from student LIMIT 130000,1
 ) LIMIT 10

 

    

 or



 

 

使用到主键索引

  查询时间:

  0.001s 

  

 优化方案二:

   

   第一步:

    SELECT id from student where id>=120001 LIMIT 10

    第二步:

SELECT * from student WHERE id in(120001,120002,120003,120004,120005,120006,120007,120008,120009,120010);

   分析:

   第一步:

 第二步:



 

    同样使用到主键索引

 

  查询时间:0.001s+0.000s

 和方案二性能差不多, 实测千万数据性能最优

 

   优化方案三

   

EXPLAIN SELECT SQL_NO_CACHE * from student INNER JOIN(SELECT id from student LIMIT 100000,10) as b using(id);

 

   

 

    分析:

    在查询id范围使用到索引

    查询时间:0.026s

  

 

   总结:方案一、方案二需要传递上一页最后一条数据id并且id是有序、可排序 如果id不是顺序增长可以使用  order by id 排序,方案三比较通用性能较低。

 

  • 大小: 4.2 KB
  • 大小: 5.4 KB
  • 大小: 4.4 KB
  • 大小: 8 KB
  • 大小: 7 KB
分享到:
评论

相关推荐

    MySQL 百万级分页优化(Mysql千万级快速分页)

    ### MySQL 百万级分页优化(Mysql千万级快速分页) #### 背景与挑战 在处理大规模数据集时,例如拥有数百万乃至数千万条记录的数据库表,传统的分页查询方法可能会遇到性能瓶颈。特别是使用`LIMIT`进行分页时,随着...

    如何优化Mysql千万级快速分页

    在实际开发中,我们经常会遇到 MySQL 数据库的性能问题,特别是在处理千万级数据时,分页查询的性能会变得非常慢。在这篇文章中,我们将探讨如何优化 MySQL 千万级快速分页,详细介绍解决方案。 问题描述 我们有一...

    MySQL千万级大表深度分页为什么慢,以及优化的方法、原理

    【MySQL千万级大表深度分页慢的原因及优化方法】 在MySQL中,处理千万级大表的深度分页查询时,通常会遇到性能问题。这是因为MySQL的查询优化器在面对大量数据的分页请求时,可能选择全表扫描而不是利用索引来提高...

    千万级数据分页存储过程

    本文将深入探讨如何设计和实现一个用于处理千万级数据分页的存储过程,并基于提供的"存储过程分页.sql"文件进行解析。 首先,我们需要理解分页的基本概念。分页是将大量数据分成小块(页)进行显示,以避免一次性...

    Mysql千万级别数据优化方案

    "Mysql千万级别数据优化方案" 一、 目的与意义 在 MySql 单表中数据达到千万级别时,数据的分页查询结果时间过长,对此进行优达到最优效果,也就是时间最短。为了解决这个问题,我们需要了解 MySQL 数据库的分页...

    mysql千万级数据分页查询性能优化

    综上所述,针对MySQL千万级数据分页查询的性能优化,主要是通过合理使用索引、调整查询语句、数据归档、读写分离、缓存以及预计算等策略,以减少不必要的数据扫描和提高查询效率。在实际应用中,需要根据具体的业务...

    mysql千万级数据脚本测试shardingjdbc-course.zip

    本案例涉及的是一个针对MySQL数据库的千万级数据脚本测试,使用了ShardingJDBC这一分布式数据管理框架。接下来,我们将深入探讨相关知识点。 首先,MySQL是一个广泛使用的开源关系型数据库管理系统,其在处理大量...

    mysql千万级数据大表该如何优化?

    MySQL数据库在处理千万级数据大表时,优化是至关重要的,因为这直接影响到系统的性能和响应速度。以下是一些关键的优化策略: 1. **数据容量规划**:预测未来1-3年内数据增长情况,计算每条数据的平均大小,以此来...

    MySQL 千万级数据量如何快速分页

    综上所述,优化MySQL的千万级数据分页需要综合考虑索引设计、查询语句优化、数据结构调整等多个方面,通过这些方法,可以在保证查询效率的同时,提供良好的用户体验。在实际开发中,应根据具体场景选择合适的优化...

    Mysql百万级分页优化技巧

    MySQL中的分页查询在处理大数据量时可能会遇到性能瓶颈,特别是在进行百万级乃至千万级的分页时。传统的`LIMIT start, offset`方法在数据规模扩大后效率显著降低,因为MySQL需要扫描从开始到offset的所有行,这在...

    百万级数据库记录下的Mysql快速分页优化实例

    ### 百万级数据库记录下的MySQL快速分页优化实例 #### 概述 在处理大量数据时,如何高效地进行分页查询是一项重要的技术挑战。本文档将详细探讨当面对百万乃至千万级别数据记录时,如何优化MySQL的分页查询性能。...

    Mysql limit 优化,百万至千万级快速分页 复合索引的引用并应用于轻量级框架

    总结来说,MySQL在处理大规模数据分页时的性能问题可以通过以下方式优化: 1. 选择正确的索引策略,包括使用复合索引。 2. 使用子查询定位起始ID。 3. 考虑分表策略,将不同条件的数据分散到多个表中。 4. 实施...

Global site tag (gtag.js) - Google Analytics