gpt4 book ai didi

sql - 如果我期望读取多于写入,SQL 中的冗余列是否有益?

转载 作者:搜寻专家 更新时间:2023-10-30 19:48:03 25 4
gpt4 key购买 nike

假设我有一个包含商店数字评分的数据库,我的应用需要能够读取商店的平均评分:

商店表:id (pk), name (varchar), average_rating (float - 冗余列)

评级表:id (pk)、rating_num (int)、shop_id (int)

为了保持一致性,简单地重新计算评级表中的平均评级显然是最佳做法;但是,从该应用程序的先前版本来看,预计将读取大约 80% 的查询以了解商店的平均评分。换句话说,写评分比阅读商店的平均评分要少得多。

如果我以这种方式构建我的数据库,我将不需要额外的连接或查询来跳转到评级表。这有什么注意事项吗?

最佳答案

在 Sql Server 中解决这种情况的最佳方法是使用 Indexed View . Oracle , PostgreSQL , MySql 称它们为物化 View

索引 View 可以自动为您保持最新的平均评分数据,而无需在表中实际复制它。当然,数据在 View 中仍然是重复的。不同之处在于,您只需告诉 Sql Server 那些数据是什么样子的。您无需自己设法使其保持最新状态。

关于sql - 如果我期望读取多于写入,SQL 中的冗余列是否有益?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31225582/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com