sql - 在 PostgreSQL 中保存多个用于聚合的动态过滤器
问题描述
存储多个动态过滤器的最有效方法是什么,这些过滤器可以由用户在给定数据上创建,而我们是用于聚合数据的过滤器?
假设我有一个名为的表t_filter
,它将存储给定数据的一些数据过滤器/查询t_data
。
用户可以完全动态地构建每个过滤器 ,并可以将其保存以创建某种仪表板(按 filter_name 保存的过滤器列表以及按条件过滤的数据的一些聚合函数)。
每个过滤器可以在. >=
_ <=
_ !=
_ ==
_ IS NOT NULL
_IS NULL
AND
OR
BETWEEN
t_data
用户可以修改其过滤器:创建/更新/删除,其中的条目t_data
可以通过导入增长或通过删除缩小,所以一切都是动态的。
我通过根据用户创建的过滤器创建动态 SQL 来解决这个问题,UNION ALL
每个现有的动态 SQL 条目都在t_filter
其中并从结果中创建一个物化视图(只是外键信息:filter_id
属于哪个 data_id)。
此解决方案有效,但不是那么方便,因为我需要检查过滤器更改并重新生成物化视图以及t_data
.
对于每个额外的过滤器条目,生成视图的时间会更长,因为需要执行额外的 SQL。
有没有更好的方法来解决这个问题?
解决方案
推荐阅读
- wolfram-mathematica - 将表达式微分的结果添加到字符串变量
- php - 重定向中的最终 url
- html - 打印分页符问题 - 浏览器中的打印预览
- tomcat - Tomcat 8.5 忽略 context.xml 中的 JarScanFilter 设置
- scala - heroku - 导致 Scala Play 构建在 heroku 上失败的依赖问题
- mysql - SQL:如何查询我注册6个月后购买的客户?
- c# - Dotliquid 日期过滤器
- python - 使用 if 语句检测随机整数是奇数还是偶数
- javascript - 试图检索一个
- sql - 尝试在没有 UNION 的情况下简化 SQL 查询