我的架构看起来像这样:
items ( id, title)
tags (id, name )
items_tags ( item_id, tag_id )
我想有效地获取项目列表,每个项目都有自己的一组标签。大概是对数据库的一次查询。高效是指查询应该在尽可能快的时间内返回其结果,使用最少的服务器和数据库资源,如 CPU 和 RAM。据推测,项目和标签的数量超过几百万,并行查询的数量很高。高负荷和所有的东西。所以像:
// Get all items with tags
'Item-1' has 'Tag-1', 'Tag-2'
'Item-2' has 'Tag-3', 'Tag-5'
...
我使用的是 PostgreSQL 10。所以实际上有两个问题:
- 从这样的模式中检索此类数据的高效SQL 查询会是什么样子?
- 也许可以重新设计数据的模式以在这种情况下更有效?也许我应该使用数组、HStore、JSONB?