优化分页的查询

一般分页查询时,通过创建覆盖索引能够比较好的提高性能。一个经常使用的场景:"limit 1000,20",此时MySQL排序出前1020记录后仅仅返回第1001到1020条记录。前1000条记录会被抛弃,查询和排序的代价非常高。

第一种优化思路

在索引上完成排序分页的操作,最后根据主键关联回原表查询所需要的其他列内容。尽可能扫描少的页面来提高分页的效率。

explain select film_id,description from film order by title limit 50,5\G;

从输出的结果看:优化器做了全表扫描,处理效率不高。

优化

explain select a.film_id,a.description from film a inner join(select film_id from film order by title limit 50,5)b on a.film_id = b.film_id\G;

第二种优化思路

把limit查询转换成某个位置的查询。如: 第n的最后一条的id为1100,现在需要翻页到n+1页,可以通过前台传入第n页的最后一条记录的id为1100。

时间: 2024-10-16 18:32:51

优化分页的查询的相关文章

mysql 3200万数据,优化分页查询

my.ini参数修改了下 Java代码   table_cache=512 bulk_insert_buffer_size = 100M innodb_additional_mem_pool_size=30M innodb_flush_log_at_trx_commit=0 innodb_buffer_pool_size=207M innodb_log_file_size=128M innodb_flush_log_at_trx_commit默认值1的意思是每一次事务提交或事务外的指令都需要把日

ListView优化分页优化

缘由 我们在用ListView展现数据的时候.比如展现联系人,如果联系人太多就会出现卡的现象,比如如果有1000多条数据,从数据库里查询,然后装载到List容器这段时间是比较耗时的.虽然我们可以用asyncTask来单独开启一个子线程加载.一次查看那么多,未免有点多余.是否可以通过先装载30条数据,如果用户需要我们在继续查询并且展示后面的数据,这样一来可以提升.使用速率. 实现方法 1.数据库分页查询 首先写SqlHelper指定每次查询数据库多少数据.代码如下 /*** 分页查询黑名单* *

mysql优化--分页

一般我们通常会order by limit start ,offset的方式进行分页查询. 1一般而言,分页sql的耗时随着start的增加而急剧的增加 例如:select * from a1 limit 100,10 --->0.02s select * from a1 limit 100000,10--->3.02s 可以看出,随着start的急剧增加,耗时成倍的增加,如何优化呢? 一般想要优化分页,最好的解决办法就是:没有分页.或者可以把分页的算法给Sphinx,Lucence等第三方解

webform:分页组合查询

一个简单的分页组合查询页面 /// <summary> /// 查询方法 /// </summary> /// <param name="tsql">SQL语句</param> /// <param name="hh">哈希表</param> /// <returns></returns> public List<Goods> Select(string un

013.子查询和分页子查询(sql实例)

--1 子查询 如果子查询和表连接都实现的时候,推荐用表连接实现( 一般:能用表连接实现的就用表连接,有些情况用表连接不能 或者不易实现的再选择子查询) 系统:缓存,执行计划技术手段 --1 where 条件后 + 子查询 注意: 1 先执行的是子查询语句 2 子查询嵌套的层数越大,性能会随之递减 A) 当子查询写在比较运算符之后(=,!=,>,...)时 要求:子查询的查询结果不能多于1个(1,0(不会报错, 没有结果)) --eg select * from EMP where SAL>(

分页查询和分页缓存查询,List&lt;Map&lt;String, Object&gt;&gt;遍历和Map遍历

分页查询 String sql = "返回所有符合条件记录的待分页SQL语句"; int start = (page - 1) * limit + 1; int end = page * limit; sql = "select * from (select fulltable.*, ROWNUM RN from (" + sql + ") fulltable where ROWNUM <= " + end + ") where

sql server中的分页数据查询

1.引言 今天在工作中遇到一个需要进行sql server分页数据查询的问题,但是分页数据查询的sql却忘记了,最终通过查询资料解决了该问题.现在把解决方法记下,以备查阅. 在这里需要感谢博客园的Qlin 2.数据分页语句 假设需要查询表为Test,Test表中有个字段为ID(我这里用的是int型),当前页pageIndex=5,页大小pageSize=10.则分页查询语句如下: SELECT * FROM ( SELECT ROW_NUMBER() OVER (ORDER BY ID) AS

优化器的查询转换

1.视图合并 SQL> create view emp_vm as 2 select empno,ename,job,sal,comm,deptno 3 from emp 4 where deptno=30; View created. SQL> select empno 2 from emp_vm 3 where empno > 150; EMPNO ---------- 7499 7521 7654 7698 7844 7900 6 rows selected. SQL> se

Linq组合查询与分页组合查询结合

1.组合查询 <div>姓名:<asp:TextBox ID="T1" runat="server"></asp:TextBox></div> <div> 性别:<asp:DropDownList ID="DropDownList1" runat="server"> <asp:ListItem Text="男和女" Value=&