1)简单的查询分页:分每页5条 limit [offset],[rows] ,10; 2)建立id索引:查询索引id ,) limit ; 3)使用 between and 语句分页效率快N倍 ; 4)分表存储:30万条记录的id存存储到单独的一个索引表t里面:先查找索引表t里面的id索引:然后再查询 5)使用复合索引查询数据 如果对于有where 条件,又想走索引用limit的,必须设计一个索引,将where 放第一位,limit用到的主键放第2位,而且只能select 主键! 完美解决了分页…
在mysql中进行分页查询时,一般会使用limit查询,而且通常查询中都会使用orderby排 序.但是在表数据量比较大的时候,例如查询语句片段limit 10000, 20,数据库会读取10020条数据,然后把前10000条丢弃,把最后的20条返回给你,这种消耗是可以避免的,也是没必要的.下边介绍几种优化方法: 优化方法1(让分页操作在索引中进行):下载地址  一般表中经常作为条件查询的列都会建立索引,例如如下查询 Sql代码 SELECT msg_id, msg_content FROM m…
select * from table LIMIT 5,10; #返回第6-15行数据 select * from table LIMIT 5; #返回前5行 select * from table LIMIT 0,5; #返回前5行 我们来写分页 物理分页 select * from table LIMIT (当前页-1)*每页显示条数,每页显示条数; 同样是取90000条后100条记录,传统方式还是改造方式? 传统方式是先取了前90001条记录,取其中最大一个ID值作为起始标识,然后利用它可…
原博:MySQL单表百万数据记录分页性能优化 limit优化 当数据很多需要进行分页查询时:需要先查出第一条数据的id然后根据id查询大于id的数据 limt 一页的数据量 1.   直接用limit start, count分页语句, 也是我程序中用的方法: select * from product limit start, count当起始页较小时,查询没有性能问题,我们分别看下从10, 100, 1000, 10000开始分页的执行时间(每页取20条), 如下: select * fro…
背景:LIMIT 0,20 这种分页方式,随着 offset 值的不断增大,当达到百万级时,一条查询就需要1秒以上,这时可以借助索引条件的查询来优化. SQL:select * from member where status = 1 limit 0,20;  改写  select * from member where id >= 1 and status = 1 limit 20; 代码片段: /** * limit 分页优化 * @author ercom */$startTime = t…
最近在生产上遇见一个分页查询特别慢的问题,数据量大概有200万的样子,翻到最后一页性能很低,差不多得有4秒的样子才能出来整个页面,需要进行查询优化. 第一步,找到执行慢的sql,如下: SELECT         shotel_id as hotelId, mroom_type_id as mroomTypeId, available_date as availableDate, result_status as resultStatus, create_time as createTime,…
对于有大数据量的mysql表来说,使用LIMIT分页存在很严重的性能问题. 查询从第1000000之后的30条记录: SQL代码1:平均用时6.6秒 SELECT * FROM `cdb_posts` ORDER BY pid LIMIT 1000000 , 30 SQL代码2:平均用时0.6秒 SELECT * FROM `cdb_posts` WHERE pid >= (SELECT pid FROM `cdb_posts` ORDER BY pid LIMIT 1000000 , 1) L…
1.直接使用数据库提供的SQL语句 limit M ,N SELECT * from message limit 0 , 10 ; -- 0.044 SELECT * from message limit 100 , 10 ; -- 0.084 SELECT * from message limit 1000 , 10 ; -- 0.087 SELECT * from message limit 10000 , 10 ; -- 0.102 SELECT * from message limit…
同样是取10条数据  select * from yanxue8_visit limit 10000,10 和  select * from yanxue8_visit limit 0,10  就不是一个数量级别的.  网上也很多关于limit的五条优化准则,都是翻译自MySQL手册,虽然正确但不实用.今天发现一篇文章写了些关于limit优化的,很不错.  文中不是直接使用limit,而是首先获取到offset的id然后直接使用limit size来获取数据.根据他的数据,明显要好于直接使用li…
目录 1.   InnoDB表的索引的几个概念 2.   覆盖索引和回表 3.   分页查询 4.   延迟关联优化 写在前面 下面的介绍均是在选用MySQL数据库和Innodb引擎的基础开展.我们先来学习索引的几个概念,帮助我们理解延迟关联优化的加快分页查询速度的原因. 一.Innodb表的索引的几个概念 InnoDB表是基于聚簇索引建立的. 索引一般分为主键索引和普通索引(辅助索引),聚簇索引并不是主键索引这样的单独的索引类型,而是一种数据存储方式.通俗的来说,单独的索引是存储了索引信息的B…