应用场景;

  当有一张表的数据非常大,需要使用到分页查询,分页查询在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 大数据分页查询优化的更多相关文章

  1. MySQL大数据分页的优化思路和索引延迟关联

    之前上次在部门的分享会上,听了关于MySQL大数据的分页,即怎样使用limit offset,N来进行大数据的分页,现在做一个记录: 首先我们知道,limit offset,N的时候,MySQL的查询 ...

  2. mysql 大数据分页优化

    一.mysql大数据量使用limit分页,随着页码的增大,查询效率越低下. 1.   直接用limit start, count分页语句, 也是我程序中用的方法: select * from prod ...

  3. Mysql大数据量查询优化

    一般MYSQL最基本的分页方式: select * from content order by id desc limit 0, 10 在中小数据量的情况下,这样的SQL足够用了,唯一需要注意的问题就 ...

  4. mysql大量数据分页查询优化-延迟关联

    所有的php初学者都应该知道,mysql的分页语句写法如下: 1 select * from a limit (page-1)*page_size,page_size 而当这语句分页到一定程度时,例如 ...

  5. 关于MySQL大量数据分页查询优化

    select * form user id in(select id from user limit 1000000,10);

  6. MySQL大数据量分页查询

    mysql大数据量使用limit分页,随着页码的增大,查询效率越低下. 测试实验 1.   直接用limit start, count分页语句, 也是我程序中用的方法: select * from p ...

  7. 【1】MySQL大数据量分页查询方法及其优化

    ---方法1: 直接使用数据库提供的SQL语句---语句样式: MySQL中,可用如下方法: SELECT * FROM 表名称 LIMIT M,N---适应场景: 适用于数据量较少的情况(元组百/千 ...

  8. mysql大数据量下的分页

    mysql大数据量使用limit分页,随着页码的增大,查询效率越低下. 测试实验 1.   直接用limit start, count分页语句, 也是我程序中用的方法: select * from p ...

  9. MySQL大数据量分页查询方法及其优化

    MySQL大数据量分页查询方法及其优化   ---方法1: 直接使用数据库提供的SQL语句---语句样式: MySQL中,可用如下方法: SELECT * FROM 表名称 LIMIT M,N---适 ...

随机推荐

  1. 关于 org.hibernate.TransientObjectException 异常

    在Hibernate的关联关系中,如果一个对象A 持有 对象 B 的引用,如果先保存 A ,再保存B,那么会出现 org.hibernate.TransientObjectException 异常. ...

  2. Python的免费在线学习课程

    网上资源不是本人的,所以,只是转发.其它的不负责 http://www.imooc.com/learn/177

  3. Codeforces Round #429

    Table of Contents A. Generous KefaB. GodsendC. Leha and Function A. Generous Kefa One day Kefa found ...

  4. 2016 China Collegiate Programming Contest Final

    2016 China Collegiate Programming Contest Final Table of Contents 2016 China Collegiate Programming ...

  5. sublime3插件安装方法

    sublime3插件安装方法:http://blog.csdn.net/u011627980/article/details/52171886

  6. 复合词(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 ...

  7. 自己平时收集的css、html笔记(适合初级前端攻城狮)

    实习了一年时间,陆陆续续记录下来一堆笔记,不过也丢失了一些... 以后会持续更新.扩展,现在把碰到的知识点归纳于此,方便翻阅 一.html部分 1.取消iPhone自动识别数字为拨打号码 <me ...

  8. Linux 学习第二天

    一.常用命令的使用 1.echo echo https://www.cnblogs.com/rise-home/ 输出字符串 2.ps  -aux(显示进程信息) ps 进程状态共有5种 A.STAT ...

  9. Sencha Visual Studio(IDE插件)

    Sencha Visual Studio(IDE插件) 首先从官网上下载Visual Studio插件,注意不是VSCode编辑器,下载完后安装打开Visual Studio提示你去注册,输入你的se ...

  10. windows 下安装pyspider

    今天主要介绍一下在Windows下安装pyspider,pyspider是一款用python编写的网络爬虫框架,这个框架最好是在linux下运行,Windows下运行可能会出现兼容性问题,如果实在要在 ...