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

在 MySQL 单表存储 500 万数据的场景下,如何设计读取

在 MySQL 单表存储 500 万数据的场景下,设计高效读取方案需要从 查询优化、架构扩展、硬件调优 三个层面综合考虑。以下是具体方案,结合实际项目经验(如标易行投标服务平台)进行分析:


一、查询优化:降低单次查询开销

1. 索引优化
  • 核心原则:仅为高频查询条件、排序字段、分组字段建立索引,避免过度索引。
  • 场景示例
    • 标易行平台的“商机检索”功能,用户按行业、地区、发布时间组合筛选,建立联合索引 (industry, region, publish_time)
    • 对“我的收藏”列表按用户 ID 分页查询,建立 (user_id, created_time) 索引,避免全表扫描。
  • 优化技巧
    • 使用 覆盖索引(索引包含查询字段)减少回表操作。
    • 避免索引字段参与计算(如 WHERE YEAR(create_time) = 2024 → 改写为范围查询)。
2. 分页优化
  • 问题LIMIT 1000000, 20 会扫描前 100 万行,性能极差。
  • 解决方案
    • 游标分页:记录上一页最后一条数据的 ID(或时间戳),下一页查询使用 WHERE id > last_id LIMIT 20
      SELECT * FROM tender 
      WHERE
http://www.dtcms.com/a/135543.html

相关文章:

  • 冲刺高分!挑战7天一篇nhanes机器学习SCI!DAY1-7
  • 1023 Have Fun with Numbers
  • Python基础语法——常量变量
  • 【Linux】进程的程序替换、自定义shell命令行解释器
  • 批量将多个文件按扩展名分类到不同文件夹
  • 如何实现动态请求地址(baseURL)
  • 数据库案例1--视图和索引
  • lvs + keepalived + dns 高可用
  • 嵌入式开发
  • 实时数据同步方案
  • 网络安全·第四天·扫描工具Nmap的运用
  • libaom 码率控制实验:从理论到实践的深度探索
  • 水污染治理(生物膜+机器学习)
  • Android离屏渲染
  • ubuntu 常用指令
  • leetcode298.生命游戏
  • E-trace for risc-v
  • 机器视觉检测Pin针歪斜应用
  • 编写了一个专门供强化学习玩的贪吃蛇小游戏,可以作为后续学习的playgraound
  • L1-028 判断素数
  • Python asyncio 入门实战-2
  • 游戏引擎学习第226天
  • 381_C++_decrypt解密数据、encrypt加密数据,帧头和数据buffer分开
  • Nacos-Controller 2.0:使用 Nacos 高效管理你的 K8s 配置
  • 0415美团面试题目详解
  • MapSet 2 (Set)
  • Vulhub-DarkHole靶机通关攻略
  • 代码随想录算法训练营第十八天
  • redisson分布式锁--实际应用!!!
  • 决策树简介