三种方案对比矩阵
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 渐进升级
每个阶段都是对的,关键在匹配当前规模