mysql limit 优化分页查询

最近做的一个网站谷歌站长工具提示sitemap访问超时,这是为毛原因呢?之前不是好好的么?进入mysql发现某个进程等待时间比较长,进一步发现原来是这样分页的mysql语句,因为文章比较多,而且是直接生成xml文件,全部笼统第调出所有文章aid,然后由php组和生成sitemap,我的分页mysql,类似如下:

select id,title from collect limit 1000,10; 很快;基本上0.01秒就OK

select id,title from collect limit 90000,10; 从9万条开始分页,结果?

select aid from articles order by aid limit 80000,4000

当然,前面几页数据还挺快的,上了一二十页后,等待的时间特别长。

最终优化如下:

select aid from  articles  where aid >=(select aid from articles order by aid limit 80000,1) order by  aid desc limit 4000

这样一来,效率瞬间提高。有木有?必须得有阿。

最后做个小总结:直接用limit分页查询,在数据量较小的情况下那是相当给力,随着翻页到后面,效率瞬间下降,于是用上面第二句可解决问题。此两句结合使用,将是天下无双了吧。

补充:子查询用了join来优化

select id , login_name , password from user join (select id from user order by login_name limit 200000 , 10) as user2 using(id);
用了0.5x秒

explain 上述

三次查询

1,using index 的limit
2,没看懂,可能是join的过程
3, 主键in查询 10条,飞快

时间: 2024-10-25 17:58:40

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

mysql中关于分页查询的输出问题!

问题描述 mysql中关于分页查询的输出问题! String sql = ""select * from emp order by empno limit ??"";prepareStatement stmt = con.prepareStatement(sql); stmt.setInt(1 begin); stmt.setInt(2 end); ResultSet rs = stmt.executeQuery(); while (rs.next()) { Sys

mysql limit 用法与mysql limit 优化

mysql教程 limit 用法与mysql limit 优化 /* mysql limit 用法2007年11月08日 14:291. select * from tablename <条件语句> limit 100,15 从100条记录后开始取15条 (实际取取的是第101-115条数据) 2. select * from tablename <条件语句> limit 100,-1 从第100条后开始-最后一条的记录 3. select * from tablename <

mysql limit 优化方法

mysql limit 优化方法 SELECT * FROM table  LIMIT [offset,] rows | rows OFFSET offset LIMIT 子句可以被用于强制 SELECT 语句返回指定的记录数.LIMIT 接受一个或两个数字参数.参数必须是一个整数常量.如果给定两个参数,第一个参数指定第一个返回记录行的偏移量,第二个参数指定返回记录行的最大数目.初始记录行的偏移量是 0(而不是 1): 为了与 PostgreSQL 兼容,MySQL 也支持句法: LIMIT #

mysql limit的分页用法与性能优化

mysql教程 limit 的性能问题 有个几千万条记录的表 on mysql 5.0.x,现在要读出其中几十万万条左右的记录 常用方法,依次循环: select * from mytable where index_col = xxx limit offset, limit; 经验:如果没有blob/text字段,单行记录比较小,可以把 limit 设大点,会加快速度 问题:头几万条读取很快,但是速度呈线性下降,同时 mysql server cpu 99% 速度不可接受. 调用 explai

Oracle、 Mysql 、 SQLserver 分页查询

MYSQL 分页最简单了. SELECT * FROM Account  WHERE (usertype='base' or usertype='home' or usertype='salse')  and logindate is not null order by logindate desc LIMIT 起始行, 每页多少行 LIMIT 接受一个或两个数字参数. 参数必须是一个整数常量. 如果给定两个参数,第一个参数指定第一个返回记录行的偏移量, 第二个参数指定返回记录行的最大数目. 初

mysql性能优化-慢查询分析、优化索引和配置

目录 一.优化概述 二.查询与索引优化分析 1性能瓶颈定位 Show命令 慢查询日志 explain分析查询 profiling分析查询   2索引及查询优化 三.配置优化 1)      max_connections 2)      back_log 3)      interactive_timeout 4)      key_buffer_size 5)      query_cache_size 6)      record_buffer_size 7)      read_rnd_b

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

MySql 这个数据库绝对是适合dba级的高手去玩的,一般做一点1万篇新闻的小型系统怎么写都可以,用xx框架可以实现快速开发.可是数据量到了10万,百万至千万,他的性能还能那么高吗?一点小小的失误,可能造成整个系统的改写,甚至更本系统无法正常运行!好了,不那么多废话了.用事实说话,看例子: 数据表 collect ( id, title ,info ,vtype) 就这4个字段,其中 title 用定长,info 用text, id 是逐渐,vtype是tinyint,vtype是索引.这是一个

Mysql limit 优化,百万至千万条记录实现快速分页

可是数据量到了10万,百万至千万,他的性能还能那么高吗?一点小小的失误,可能造成整个系统的改写,甚至更本系统无法正常运行!好了,不那么多废话了.用事实说话,看例子: 数据表 collect ( id, title ,info ,vtype) 就这4个字段,其中 title 用定长,info 用text, id 是逐渐,vtype是tinyint,vtype是索引.这是一个基本的新闻系统的简单模型.现在往里面填充数据,填充10万篇新闻. 最后collect 为 10万条记录,数据库表占用硬盘1.6

mysql limit 优化方法与详细说明

select * from table limit [offset,] rows | rows offset offset limit 子句可以被用于强制 select 语句返回指定的记录数.limit 接受一个或两个数字参数.参数必须是一个整数常量.如果给定两个参数,第一个参数指定第一个返回记录行的偏移量,第二个参数指定返回记录行的最大数目.初始记录行的偏移量是 0(而不是 1): 为了与 postgresql 兼容,mysql教程 也支持句法: limit # offset #. mysql