mysql 大数据分页查询优化
应用场景;
当有一张表的数据非常大,需要使用到分页查询,分页查询在100w条后查询效率非常低;
解决方案:
1、业务层解决:只允许用户翻页一百页以内,十条一页;
2、使用where id > 5000000 limit 10; 要求数据完整性;但可以考虑每次查询时得知已查的最后一条id。
3、延迟查询:select table.id,table.name left join (select id from table limit 5000000,10) as tmp on table.id = tmp.id;id为索引;先通过索引查处500w条后的id,速度贼快。然后通过索引id来查询出对应的每一条数据;数独也贼快;但通过关联表在海量数据中查询会消耗一些时间;但比之前是提升了一倍多的数度;
开启慢查询日志:
在mysql中代码改配置:
开启慢查询日志:查询目前状态 show variables like '%query%';修改两个配置:set global slow_query_log = on; set session long_query_time = 2; slow_query_log_file配置缓存日志的路径
日志一条数据
# Time: ::
# User@Host: root[root] @ localhost [] Id:
# Query_time: 9.141422 Lock_time: 0.000117 Rows_sent: Rows_examined:
SET timestamp=;
select * from jacky order by sid,score limit ;
查看一条语句执行效率
开启:set profiling = 1;
查询:show profiles;
查看某条详情:show profile for query num
variables中保存了所有mysql的系统配置; 可以通过show variables like "%xxx%';查询
show variables like '%query%'; #查看关于query的配置
show variables like 'version'; #查看mysql版本
explain 分析sql语句
explain select * from ......
+----+-------------+-------+-------+---------------+----------+---------+------+--------+-----------------------+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+----+-------------+-------+-------+---------------+----------+---------+------+--------+-----------------------+
| | SIMPLE | jacky | range | sid_type | sid_type | | NULL | | Using index condition |
+----+-------------+-------+-------+---------------+----------+---------+------+--------+-----------------------+
select_type : simple
tables : 表名
type : 这列比较重要;表示使用了哪种类型;有没有使用索引;从最好到最差的连接类型为const、eq_reg、ref、range、indexhe和ALL
possible_keys : 提示使用哪个索引会在该表中找到行,不太重要
keys : MYSQL使用的索引,简单且重要
key_len : MYSQL使用的索引长度
ref : ref列显示使用哪个列或常数与key一起从表中选择行。没明白
rows : 比较重要;表示该查询所遍历的行数;越小越好;
Extra : 该列包含MySQL解决查询的详细信息。一次条件查询中改参数为:User where
尽量注意:type、rows、keys、extra这几个参数;
mysql 大数据分页查询优化的更多相关文章
- MySQL大数据分页的优化思路和索引延迟关联
之前上次在部门的分享会上,听了关于MySQL大数据的分页,即怎样使用limit offset,N来进行大数据的分页,现在做一个记录: 首先我们知道,limit offset,N的时候,MySQL的查询 ...
- mysql 大数据分页优化
一.mysql大数据量使用limit分页,随着页码的增大,查询效率越低下. 1. 直接用limit start, count分页语句, 也是我程序中用的方法: select * from prod ...
- Mysql大数据量查询优化
一般MYSQL最基本的分页方式: select * from content order by id desc limit 0, 10 在中小数据量的情况下,这样的SQL足够用了,唯一需要注意的问题就 ...
- mysql大量数据分页查询优化-延迟关联
所有的php初学者都应该知道,mysql的分页语句写法如下: 1 select * from a limit (page-1)*page_size,page_size 而当这语句分页到一定程度时,例如 ...
- 关于MySQL大量数据分页查询优化
select * form user id in(select id from user limit 1000000,10);
- MySQL大数据量分页查询
mysql大数据量使用limit分页,随着页码的增大,查询效率越低下. 测试实验 1. 直接用limit start, count分页语句, 也是我程序中用的方法: select * from p ...
- 【1】MySQL大数据量分页查询方法及其优化
---方法1: 直接使用数据库提供的SQL语句---语句样式: MySQL中,可用如下方法: SELECT * FROM 表名称 LIMIT M,N---适应场景: 适用于数据量较少的情况(元组百/千 ...
- mysql大数据量下的分页
mysql大数据量使用limit分页,随着页码的增大,查询效率越低下. 测试实验 1. 直接用limit start, count分页语句, 也是我程序中用的方法: select * from p ...
- MySQL大数据量分页查询方法及其优化
MySQL大数据量分页查询方法及其优化 ---方法1: 直接使用数据库提供的SQL语句---语句样式: MySQL中,可用如下方法: SELECT * FROM 表名称 LIMIT M,N---适 ...
随机推荐
- Gym 101308I Inspection
题意: 用最少的路径,覆盖掉所有的边,(点可以重复): 不是用最小路径覆盖,最小路径覆盖是覆盖点: 分析: 建图:入度<出度,说明这是个起点,从这里出发,入度>出度,说明从这里结束: 先找 ...
- 【[CTSC2000]冰原探险】
noip前练一下码力还是非常有前途的 这道题本来就是想写个大暴力弃疗的,所以直接强上暴力浑身舒爽 结果发现要不是判重的时候脑残了,就能\(A\)了 没什么好说的呀,就是每一次都暴力\(O(n)\)往上 ...
- Yii 判断是不是post方式提交的数据
一.在controller里判断提交是不是通过post方式: if(Yii::$app->request->isPost){ return true; }else{ return fals ...
- HashMap面试知识点
HashMap的工作原理是近年来常见的Java面试题. 几乎每个Java程序员都知道HashMap,都知道哪里要用HashMap,知道Hashtable和HashMap之间的区别,那么为何这道面试题如 ...
- samb共享
1. 2. 3. ssh root@192.168.10.1 cd /etc smbpasswd -a root 在提示下创建新密码即可 4. 在Mac下的finder内使用快捷键command + ...
- [转]关于VC++ MFC中的空闲Idle处理机制!
关键词: 先根据空闲标志以及消息队列是否为空这两个条件判断当前线程是否处于空闲状态(这个“空闲”的含义同操作系统的含义不同,是MFC自己所谓的“空闲”),如果是,就调用CWinThread::OnId ...
- js时间日期格式
Date.prototype.format = function(format){ var o = { "M+" : this.getMonth()+1, //month &quo ...
- 【luogu P2580 于是他错误的点名开始了】 题解
题目链接:https://www.luogu.org/problemnew/show/P2580 我真的永远都爱stl #include <map> #include <cstdio ...
- HDU1215 七夕节(模拟 数学)
传送门: http://acm.hdu.edu.cn/showproblem.php?pid=1215 七夕节 Time Limit: 2000/1000 MS (Java/Others) Me ...
- android ListView 与GridView 学习总结(五)
ListView的使用总结 基本使用: 步骤:在布局文件中定义一个ListView控件-在活动中获得ListView的实例-获得适配器adapter的实例并且传入三个参数-把适配器对象传递给lis ...