数据库:Sybase ASE 15.0.3
表:
authors(int author_id, varchar(20) author_name)
books(int author_id,int number_of_pages)
我需要在表中添加一个新字段" authors" for total_number_of_pages(作者所写的所有书籍的页数之和)。
这可以通过(可能物化的)计算字段来完成吗?
我不喜欢观点的想法,如果可能的话,我真的更希望该字段出现在表格作者中。
答案 0 :(得分:1)
使用正确的索引(在author_id
上),View解决方案实际上应该非常快。这只是一个简单的聚合。除非每位作者有数百本或数千本书,否则这根本不应成为问题。 (我希望每位作者的平均书籍数量低于或大约10?)
如果确实确实需要对此进行优化并存储缓存值,我建议使用触发器。
随着书籍的添加,删除或更新,在books表中,您可以适当地更改authors表中的值。这意味着可能重新计算的次数最少。
这样做的缺点是在设计中增加了复杂性和相互依赖性。