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---适 ...
随机推荐
- 关于 org.hibernate.TransientObjectException 异常
在Hibernate的关联关系中,如果一个对象A 持有 对象 B 的引用,如果先保存 A ,再保存B,那么会出现 org.hibernate.TransientObjectException 异常. ...
- Python的免费在线学习课程
网上资源不是本人的,所以,只是转发.其它的不负责 http://www.imooc.com/learn/177
- Codeforces Round #429
Table of Contents A. Generous KefaB. GodsendC. Leha and Function A. Generous Kefa One day Kefa found ...
- 2016 China Collegiate Programming Contest Final
2016 China Collegiate Programming Contest Final Table of Contents 2016 China Collegiate Programming ...
- sublime3插件安装方法
sublime3插件安装方法:http://blog.csdn.net/u011627980/article/details/52171886
- 复合词(Compound Words, UVa 10391)(stl set)
You are to find all the two-word compound words in a dictionary. A two-word compound word is a word i ...
- 自己平时收集的css、html笔记(适合初级前端攻城狮)
实习了一年时间,陆陆续续记录下来一堆笔记,不过也丢失了一些... 以后会持续更新.扩展,现在把碰到的知识点归纳于此,方便翻阅 一.html部分 1.取消iPhone自动识别数字为拨打号码 <me ...
- Linux 学习第二天
一.常用命令的使用 1.echo echo https://www.cnblogs.com/rise-home/ 输出字符串 2.ps -aux(显示进程信息) ps 进程状态共有5种 A.STAT ...
- Sencha Visual Studio(IDE插件)
Sencha Visual Studio(IDE插件) 首先从官网上下载Visual Studio插件,注意不是VSCode编辑器,下载完后安装打开Visual Studio提示你去注册,输入你的se ...
- windows 下安装pyspider
今天主要介绍一下在Windows下安装pyspider,pyspider是一款用python编写的网络爬虫框架,这个框架最好是在linux下运行,Windows下运行可能会出现兼容性问题,如果实在要在 ...