【发布时间】:2011-08-21 15:40:22
【问题描述】:
我想在 Oracle 数据库中构建一个报告工具,该工具根据处理不同表的多个相当复杂的查询的结果计算分数。如果某些条件匹配,所有这些查询都会给我一个特定 ID 的列表。
这是一个例子:
假设将有三个查询“查找居住在西雅图的所有用户 ID”、“查找过去三个月内购买过汽车的所有用户 ID”和“查找在美国境内移动超过 3 个的所有用户 ID”次”。如果找到查询的用户 ID,则每个查询都会为用户获得分数,例如查询 1 = 3 分,查询 2 = 5 分,查询 3 = 2 分。最终结果应该给出与至少一个查询匹配的用户及其 ID 的列表。结果集将按所有分数的总和降序排列。结果集应该是最新的。
|用户 ID | points_lived_in_seattle | points_bought_car | points_moved |总和 | -------------------------------------------------- ---------------------------- | 123 | 3 | 0 | 2 | 5 | |第456章0 | 3 | 0 | 3 | |第789章0 | 0 | 2 | 2 |在 Oracle 中实现这样的报告工具的最佳方法是什么?我正在考虑为其创建一个视图,但这将非常困难,因为在不久的将来可能会添加 20 个或更多查询。此外,我还担心组合所有查询的联接无法正常工作并导致结果集不正确。
我正在考虑的另一个选择是为每个查询创建一个物化视图,一个视图仅基于其他视图创建评分。
您将如何解决这个问题?如果其中一个查询速度非常慢,会对整个数据库的性能产生什么影响?
【问题讨论】:
标签: sql database oracle view reporting