三种方案对比矩阵 MySQL vs MySQL+ES vs Distributed DB comparison matrix MySQL 三表方案 photo + tag + photo_tag MySQL + Elasticsearch MySQL 主存 + ES 搜索加速 原生分布式数据库 Spanner / TiDB / FoundationDB 规模 万 ~ 十万 DAU 单表百万行以内 百万 ~ 千万 DAU 单表亿行以内 亿级 DAU+ 万亿行元数据 聚合 DISTINCT 可行 少量照片,聚合开销小 ES 聚合 + 缓存 ES terms agg 替代 DISTINCT 物化视图 / 预聚合 写入时维护标签列表 交集 3 标签 → 超时 子查询扫行 + 内存 INTERSECT ES bool must → 毫秒级 倒排列表天然支持 AND 交集 原生倒排 / 位图索引 分布式下交集并行计算 全文 不支持 LIKE 扫描不可行 ES 多字段全文检索 5 维字段一次查询 多索引并行召回 倒排 + 向量 + 时空融合 运维 极简 单机 MySQL,无额外组件 中等 双写一致性 · ES 集群运维 高(人力成本高) 分布式数据库团队 · 深度定制 推荐路径:MySQL 三表 → MySQL + ES → 原生分布式,随 DAU 渐进升级 每个阶段都是对的,关键在匹配当前规模