文档章节

mysql 大数据 分页 优化

t
 tystys
发布于 2017/07/24 22:06
字数 369
阅读 4
收藏 0

1. 不用多扫描数据

Paging without discarding records

尽量避免物理删除. 

select id, name, address, phone
FROM customers
WHERE id > 990
ORDER BY id LIMIT 10;

(保存最后一个|上一页的id)

前提:根据ID分页.

用户名分页:

[code]
SELECT id, username
FROM customers
WHERE username > ‘shull@iheavy.com’
ORDER BY username LIMIT 10;
[/code]

  

2. 延迟关联

Try using a Deferred Join

用户分页.

每页十人.

分第100th 页时,   LIMIT 10,起始点是 OFFSET 990.

服务器需要先去扫描这990条记录, 

 

[code]
SELECT id, name, address, phone FROM customers ORDER BY name LIMIT 10 OFFSET 990;
[/code]

解决方案:延迟关联

deferred join.

The inside piece just uses the primary key. An explain plan shows us “using index” which we love!

只去取主键id

[code]
SELECT id
FROM customers
ORDER BY name
LIMIT 10 OFFSET 990;

[/code]

Now combine this using an INNER JOIN to get the ten rows and data you want:

[code]
SELECT id, name, address, phone
FROM customers
INNER JOIN (
SELECT id
FROM customers
ORDER BY name
LIMIT 10 OFFSET 990)
AS my_results USING(id);

[/code]

That’s pretty cool!

3.保存页面| 

Maintain a Page or Place column

Another way to trick the optimizer from retrieving rows it doesn’t need is to maintain a column for the page, place or position.

Yes you need to update that column whenever you (a) INSERT a row (b) DELETE a row ( c) move a row with UPDATE.

This could get messy with page, but a straight place or position might work easier.

保存页面数据

[code]
SELECT id, name, address, phone
FROM customers
WHERE page = 100
ORDER BY name;

[/code]

Hiring? MySQL DBA Interview Guide for Candidates & Managers.

Or with place column something like this:

保存页面列数

[code]
SELECT id, name, address, phone
FROM customers
WHERE place BETWEEN 990 AND 999
ORDER BY name;

[/code]

 

© 著作权归作者所有

共有 人打赏支持
t
粉丝 2
博文 72
码字总数 82272
作品 0
mysql--------大数据量分页sql语句优化

分页程序原理很简单,这里就不多说了,本篇文章主要说的是在数据表记录量比较大的情况下,如何将分页SQL做到更优化,让MySQL执行的更快的方法。 一般的情况下,我们的分页SQL语句是这样的: ...

切切歆语
01/25
0
0
数据库查询返回特定结果即分页查询

1 几种不同数据库的不同的分页写法: a mysql a) 查询前n条记录select * from table_name limit 0,nb) 查询第n条到第m条select * from table_name limit n,m b oracle a)查询前n条记录selec...

王小明123
2013/06/08
0
0
数据库分页查询和跨页选中行问题处理

今天看到一篇博客,突然想到以前遇到的一个类似的问题,关于分页查询和跨页保持选中行的问题,下面给出答案,一起探讨下吧。 一、什么是数据库分页查询? 即在服务端分页,跳到第n页才查询、...

海岸线的曙光
07/03
0
0
mysql大数据量使用limit分页,随着页码的增大,查询效率越低下

测试实验 1. 直接用limit start, count分页语句, 也是我程序中用的方法: select * from product limit start, count 当起始页较小时,查询没有性能问题,我们分别看下从10, 100, 1000, ...

文文1
06/12
0
0
【limit优化】MySQL延迟关联性能优化方法

一.业务 假设业务某个场景中,需要查询多次查询数据,sql如下: startNum = i * 500;select id,content from testtable order by updatedate asc limit " + startNum + ",500"; limit n,m定义......

谢思华
2015/08/24
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

[雪峰磁针石博客]python3快速入门教程1 turtle绘图-2函数

菲波那契序列: >>> # Fibonacci series:... # the sum of two elements defines the next... a, b = 0, 1>>> while b < 10:... print(b)... a, b = b, a+b...112......

python测试开发人工智能安全
今天
0
0
java环境变量配置最正确的方式

原贴:https://blog.csdn.net/qq_40007997/article/details/79784711,十分详细,亲测有效

kitty1116
今天
0
0
49.Nginx防盗链 访问控制 解析php相关 代理服务器

12.13 Nginx防盗链 12.14 Nginx访问控制 12.15 Nginx解析php相关配置(502的问题) 12.16 Nginx代理 扩展 502问题汇总 http://ask.apelearn.com/question/9109 location优先级 http://blog....

王鑫linux
今天
1
0
Nginx防盗链、访问控制、解析php相关配置、Nginx代理

一、Nginx防盗链 1. 编辑虚拟主机配置文件 vim /usr/local/nginx/conf/vhost/test.com.conf 2. 在配置文件中添加如下的内容 { expires 7d; valid_referers none blocked server_names *.tes......

芬野de博客
今天
0
0
spring EL 和资源调用

资源调用 import org.springframework.beans.factory.annotation.Value;import org.springframework.context.annotation.PropertySource;import org.springframework.core.io.Resource;......

Canaan_
今天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部