gpt4 book ai didi

mysql - MySQL 中更新表的去规范化、加权聚合

转载 作者:行者123 更新时间:2023-11-29 01:01:00 25 4
gpt4 key购买 nike

这次我得到了一个更笼统的问题。如果原始数据定期更新,我应该使用多个 View 而不是存储过程来加权聚合数据吗?

基本上我有一个本地 MySQL 数据库,它通过从更大的事务数据库导入相同类型的数据(表)来定期更新。

本地数据库用于统计分析。因此,我在本地对数据进行非规范化(基本上是聚合),以便与统计软件包一起使用。到目前为止,我使用存储过程是因为我觉得当加权方案(基本上是包含与变量相乘的权重的其他表)开始发挥作用时,它更容易处理(并且安排得更清楚)。

尽管存储过程的缺点是当表中填充了新数据时,我需要再次运行所有这些过程。显然我不是 DBA...所以不要回避说明显而易见的事情 :) 处理这种情况的最佳方法是什么? SP 还是观点?还是完全不同的东西?

提前感谢任何建议!

最佳答案

这取决于(这是对任何“一般”问题的一般答案,不是吗?:))。您需要权衡取舍,看看什么是满足您需求的最佳解决方案。

Views基本上只是查询重写(在 MySQL 中),因此使用 View 将在每次运行查询时执行聚合/非规范化。这可能会使您的查询变慢。此外,如果您的过程真的很复杂,那么尝试将该逻辑放入 View 中可能是不切实际的。

Stored procedures做一次工作,所以查询会更快。但是你的更新不会自动显示。所以我认为答案取决于数据更改的频率、运行查询的频率以及查询性能的重要性。

至于替代建议,您还可以使用 events 运行存储过程,如果您的数据更新是有规律的,而您只是想避免手动运行程序。

另一种选择是使用 triggers 更新非规范化/聚合表。 .当您更新源表中的数据时,触发器将自动使聚合表保持最新。

Here是指向存储过程、 View 、触发器和事件的文档的链接。

关于mysql - MySQL 中更新表的去规范化、加权聚合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3230794/

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