【发布时间】:2012-07-03 03:42:57
【问题描述】:
我想打印一个数据库表中的项目列表,以及每个相关子项目的小列表(最多 10 个项目)。
例如,我有这两张表:
ITEMS
id: integer
name: string
SUBITEMS
id: integer
name: string
item_id: integer
所以,一个项目可以有很多子项目。
我想打印这样的东西:
Item 1
this item has: subitem 1, subitem 2, subitem 3
Item 2
this item has: subitem 4, subitem 5, subitem 6
Item 3
this item has: subitem 2, subitem 4, subitem 7
考虑到性能,我如何才能做到这一点?正如我所说,每个项目可以有很多子项目,但我最多会显示 10 个。
如果我使用连接进行选择,我认为当分页时,例如每页 25 个项目和 100 个用户查询时,它可能会给数据库带来太大压力。所以,我认为这不是一个好的解决方案。
我想到了一个解决方法,有些脏:向 ITEMS 表添加一个名为 subitems_summary 的新字段(文本类型),每次将子项分配给一个项目时,我都会选择加入两个表,并将结果存储在那里,以便我稍后可以格式化该字段中的数据。例如,在上面的清单中,项目 3 的 subitems_summary 字段将是:“subitem 2; subitem 4; subitem 7”。
你怎么看?
【问题讨论】:
-
考虑一下您的“肮脏变通办法”不仅对 select 的性能有什么作用,而且对单个子项也有插入、更新和删除的作用。
-
我会使用
select *并仅遍历结果集并打印非空值
标签: database performance