一.前言 MySQL分页查询作为Java面试的一道高频面试题,这里有必要实践一下,毕竟实践出真知. 很多同学在做测试时苦于没有海量数据,官方其实是有一套测试库的. 二.模拟数据 这里模拟数据分2种情况导入,如果只是需要数据测试下,那么推荐官方数据.如果官方数据满足不了需求的话,那么我们自己模拟数据. 1. 导入官方测试库 下载 官方数据库文件 或者在 github 上下载. 该测试库含有6个表. 首先进入 employees_db, 执行导入数据指令 mysql -uroot -proot -t…
前言 当需要从数据库查询的表有上万条记录的时候,一次性查询所有结果会变得很慢,特别是随着数据量的增加特别明显,这时需要使用分页查询.对于数据库分页查询,也有很多种方法和优化的点.下面简单说一下我知道的一些方法.     准备工作 为了对下面列举的一些优化进行测试,下面针对已有的一张表进行说明. 表名:order_history 描述:某个业务的订单历史表 主要字段:unsigned int id,tinyint(4) int type 字段情况:该表一共37个字段,不包含text等大型数据,最大…
由于MySql的分页机制:并不是跳过 offset 行,而是取 offset + N 行,然后返回放弃前 offset 行,返回N 行, 所以当 offset 特别大的时候,效率就非常的低下,要么控制返回的总页数,要么对超过特定阈值的页数进行 SQL 改写. 改写例子如下:首先快速定位到offset对应的id,之后进行关联查询,如下: SELECT a.* FROM 表 1 a, (select id from 表 1 where 条件 LIMIT 100000,20 ) b where a.i…
对于web后台报表导出是一种常见的功能点,实际对应服务后端即数据库的排序分页查询.如下示例为公司商户积分报表导出其中一个sql ,当大批量的导出请求进入时候,mysql的cpu急剧上升瞬间有拖垮库的风险. SELECT * FROM coupons.cp_score_log WHERE `m_shopid` ORDER BY add_time DESC LIMIT , ; 报表导出功能存在几个问题: 1.时间跨度太大,数据量剧增.(可以结合业务需求,限制一定时间范围,比如只能导出3个月以内数据)…
有时在处理偏移量非常大的分页时候查询时,例如LIMIT 1000,10这样的查询,这时MySQL需要查询1010条记录然后只返回最后10条,前面1000条记录都被抛弃,这样的代价非常高.要优化这种查询,要么在页面中限制分页的数量,要么是优化大偏移量的性能. 优化此类分页查询的一个最简单的办法就是尽可能地使用索引覆盖查询,而不是查询所有的列.然后根据需要做一个关联操作再返回所需的列.如下 SELECT id, name, source, desc FROM alert ORDER BY name…
目录 1.   InnoDB表的索引的几个概念 2.   覆盖索引和回表 3.   分页查询 4.   延迟关联优化 写在前面 下面的介绍均是在选用MySQL数据库和Innodb引擎的基础开展.我们先来学习索引的几个概念,帮助我们理解延迟关联优化的加快分页查询速度的原因. 一.Innodb表的索引的几个概念 InnoDB表是基于聚簇索引建立的. 索引一般分为主键索引和普通索引(辅助索引),聚簇索引并不是主键索引这样的单独的索引类型,而是一种数据存储方式.通俗的来说,单独的索引是存储了索引信息的B…
文章首发在公众号(龙台的技术笔记),之后同步到博客园和个人网站:xiaomage.info 优化项目代码过程中发现一个千万级数据深分页问题,缘由是这样的 库里有一张耗材 MCS_PROD 表,通过同步外部数据中台多维度数据,在系统内部组装为单一耗材产品,最终同步到 ES 搜索引擎 MySQL 同步 ES 流程如下: 通过定时任务的形式触发同步,比如间隔半天或一天的时间频率 同步的形式为增量同步,根据更新时间的机制,比如第一次同步查询 >= 1970-01-01 00:00:00.0 记录最大的更…
背景:MySQL分页查询语句为 ,10; 一般页面还会获取总条数,这时候还需要一条查询总条数语句 , 这样数据库需要执行两次查询操作.MySQL提供了SQL_CALC_FOUND_ROWS追踪总条数的函数,FOUND_ROWS取得总条数. ,;SELECT FOUND_ROWS(); 上面SQL语句虽然有两个结果集,但只查询一次数据库,可以提升效率. 在asp.net mvc项目中,ORM仅仅使用EF的话,处理两个结果集就有些复杂,下面这段代码可以解决 /// <summary> /// 获取…
<分布式任务调度平台XXL-JOB>       博文转自 https://www.cnblogs.com/xuxueli/p/5021979.html 一.简介 1.1 概述 XXL-JOB是一个轻量级分布式任务调度框架,其核心设计目标是开发迅速.学习简单.轻量级.易扩展.现已开放源代码并接入多家公司线上产品线,开箱即用. 1.2 特性 1.简单:支持通过Web页面对任务进行CRUD操作,操作简单,一分钟上手: 2.动态:支持动态修改任务状态.暂停/恢复任务,以及终止运行中任务,即时生效:…
<分布式任务调度平台XXL-JOB>       一.简介 1.1 概述 XXL-JOB是一个轻量级分布式任务调度框架,其核心设计目标是开发迅速.学习简单.轻量级.易扩展.现已开放源代码并接入多家公司线上产品线,开箱即用. 1.2 特性 1.简单:支持通过Web页面对任务进行CRUD操作,操作简单,一分钟上手: 2.动态:支持动态修改任务状态.暂停/恢复任务,以及终止运行中任务,即时生效: 3.调度中心HA(中心式):调度采用中心式设计,“调度中心”基于集群Quartz实现并支持集群部署,可保…