当前位置: 首页 > 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

相关文章:

  • 冲刺高分!挑战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 判断素数
  • 玉渊谭天丨先爆视频再爆订单,美关税影响下企业因短视频火出圈
  • “这是本届政府的态度”,英国明确拒绝与中国脱钩
  • 网络社群的早期历史及其启示
  • 徐州沛县一村委会因无资质处理固废,被环保部门罚款19万元
  • 季度市场叙事|时间已不在美国那边
  • 重庆警方通报“货车轮胎滚进服务区致人死亡”:正进一步调查