SQLite标签性能基准测试
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."
传统关联表方案仍然是最佳平衡选择,性能出色且易于维护。