当前位置: 首页 > news >正文

MySQL 分页查询列表;Explain ;深度分页 ;管理系统,筛选系统

文章目录

    • 千万级数据计数
      • 深度分页
      • EXPLAIN:
        • 分析统计 - ANALYZE TABLE
        • 索引:
    • 场景
      • B端系统的核心业务特性

千万级数据计数

(使用的软件: DataGrip 【JetBrains】)
在这里插入图片描述

计数 innodb会一个一个数,数据量大很耗时:
在这里插入图片描述

深度分页

计数会选择最合适的索引,只数索引数目。而我们查询所有字段时,还要去拿索引对应的数据(57列嘿嘿),居然要25秒 【深度分页问题】:
在这里插入图片描述

深度分页 - 索引列:

主键和非主键索引,和计数差不多。

在这里插入图片描述

深度分页 - 非索引列:

比索引列要慢一倍多。索引列 拿叶子节点的索引就可以拿到数据,但是非索引列还得去解析字段

在这里插入图片描述

EXPLAIN:

EXPLAIN 只是生成计划,不执行

EXPLAIN 的工作主要是由 MySQL 的优化器(Query Optimizer) 来完成的。平时执行SQL语句时,解析查重完,由优化器生成多个计划,选择最优后,才真正执行的。

在这里插入图片描述

含义
id 1id,表示这是一条独立的查询
select_type SIMPLE查询类型(简单 SELECT)
table t_users_00表名
type indextype,表示走的是索引全扫描(比全表扫描快,但也要一条条扫)
key idx_created_time使用的索引
key_len 4每个索引记录的长度
rows 27586380估算的扫描行数(就是表行数)
filtered 100百分比, MySQL优化器 预估该表在这一层中,有多少百分比的行满足 WHERE 条件
Extra Using index表示是 覆盖索引,即只用到了索引,不回表,性能比访问整行高
分析统计 - ANALYZE TABLE

innodb既然不存总数,那explain咋能这么快获取总数呢?哪里缓存的 (其实可以看到数据不准确)

这些统计信息主要来源于 InnoDB 存储引擎的内部统计 + ANALYZE TABLE 命令生成的数据:

  • ANALYZE
ANALYZE TABLE <your_table>;

这个命令会:扫描部分页(非全表);收集每个索引的分布、列中不同值的数量(基数);把信息存到 information_schema.tables、statistics 表中

(这些信息一般是估值,mysql会缓存。mysql一般会在 表变动超过10%/ 显示调用/ 手动或自动开启 innodb_stats_auto_recalc 参数 时才去统计)

在这里插入图片描述
(我只有读权限,不能执行呢。 ANALYZE 语句 需要 INSERT 权限(虽然它本身不是真的去插入数据,但 InnoDB 统计信息采样需要该权限))

缓存到这里了:
在这里插入图片描述

索引:

可以发现explian使用的是 时间索引

现在表里索引有 timestamp 、 bigint unsigned 、 varchar(64),mysql选择了最轻量的索引去遍历。

timestamp 是 Unix 时间戳,是从 Unix epoch:1970年1月1日 00:00:00 UTC
32位存储范围:1970-01-01 00:01:00 UTC 到 2038-01-19 03:14:07 UTC

PS C:\Users\xiaoe\Desktop> [DateTimeOffset]::Now.ToUnixTimeSeconds()
1750323859

在这里插入图片描述
在这里插入图片描述

场景

一般就是后台管理系统,需要展示数据库列表:
B端 商家对自己商品/订单/订阅客户等的 增删查改 (B端 business,对商家;C端 customer,对用户)

在这里插入图片描述
在这里插入图片描述

像美团等平台公司来存所有商家的订单,一般也应该去根据地区去分布式。每天的订单很多,日积月累数据量也会非常大。不过访问压力不大。
B端的优势是一般不会高并发,C端用户可能都在中午一起点餐,而商家可能隔很久才回去看一次订单

B端系统的核心业务特性

特性说明
面向对象商家 = 核心用户,关注商品、订单、客户等
功能以管理为主涉及大量 CRUD(商品管理、客户管理、订单处理等)
页面复杂但访问量不高页面通常是表格/图表/导出等
低并发、高数据量订单少则几百条,多则千万级,但访问压力不大
数据增长快日积月累产生超大量数据,必须做分表分库或冷热数据拆分
http://www.lryc.cn/news/572607.html

相关文章:

  • AR 眼镜之-条形码识别-实现方案
  • 【AI时代速通QT】第二节:Qt SDK 的目录介绍和第一个Qt Creator项目
  • AI人工智能与LLM大语言模型有什么区别
  • Node.js 在前端开发中的作用与 npm 的核心理解
  • 1.22Node.js 中操作 Redis
  • Kafka线上集群部署方案:从环境选型到资源规划思考
  • 源易信息:领先GEO供应商的市场布局与服务优势
  • 【生活点滴】车辆过户、新车挂牌
  • 变幻莫测:CoreData 中 Transformable 类型面面俱到(五)
  • 学习华为 ensp 的学习心得体会
  • 百胜软件荣膺零售商业评论“《2024创新零售》优秀服务商TOP”奖项
  • 学习华为 ensp 的学习心得体会(适合新手)
  • Python 数据分析与可视化 Day 2 - 数据清洗基础
  • 如何轻松将照片从 iPhone 传输到 Android?
  • 从“数据困境”到“数据生态”:DaaS重塑三甲医院医疗数据治理
  • 【RTSP从零实践】2、使用RTP协议封装并传输H264
  • 基于Gold-YOLO的聚合-分发机制改进YOLOv8教程
  • 电影感户外柔和光线人像街拍摄影后期Lr调色教程,手机滤镜PS+Lightroom预设下载!
  • 【世纪龙科技】智能网联汽车装调仿真教学软件数智化赋能实训教学
  • 魅族“换血”出牌:手机基本盘站不稳,想靠AI和汽车“改命”
  • Servlet容器(Web容器)简介
  • Windows + R组合键常用命令
  • Qi无线充电:车载充电的便捷与安全之选
  • 大数据系统架构实践(一):Zookeeper集群部署
  • 分布式系统中的 Kafka:流量削峰与异步解耦(二)
  • Unity3d中使用Mirror进行自定义消息通信
  • 磐基PaaS平台MongoDB组件SSPL许可证风险与合规性分析(下)
  • 设计模式精讲 Day 8:组合模式(Composite Pattern)
  • Git——分布式版本控制工具
  • 深度学习N5周:Pytorch文本分类入门