SQLite标签性能基准测试

⭐⭐⭐⭐ 4星 来源: Simon Willison Research
SQLite 数据库 性能 基准测试 Python

测试参数

  • 数据规模:100,000行
  • 标签数量:100个唯一标签
  • 平均标签/行:6.5个
  • 查询迭代:每查询100次,10种不同标签组合

查询性能对比 (ms)

策略 单标签 AND (2标签) OR (2-5标签)
JSON + 物化查找表 1.37 1.88 11.02
M2M关联表 1.41 2.26 10.69
FTS5 3.28 2.59 13.54
LIKE 19.45 19.41 57.94
JSON (无索引) 54.98 54.63 84.24

存储与设置时间

策略 存储 (KB) 设置时间 (ms)
FTS5 7,044 267
LIKE 7,244 167
M2M表 8,772 1,313
JSON (无索引) 9,124 295
JSON + 查找表 20,344 1,002

最佳实践建议

  • 通用生产环境:M2M关联表 - 平衡性能与可维护性
  • 读密集型搜索:FTS5 - 最小存储,AND查询性能优秀
  • 需要JSON API + 快速查询:JSON + 物化查找表
  • 小数据集、简单代码:LIKE查询
  • 永远不要用:纯JSON无索引

核心洞察

"Classic relational approach delivers 1.4ms single-tag lookups with reasonable storage (8.7MB). Well-understood, well-indexed, and predictable."

传统关联表方案仍然是最佳平衡选择,性能出色且易于维护。