实现这个用例的最佳方法是什么?想象一下,我们在某个网页上有一个简单的表格视图。为简单起见,假设我们只有这 3 列。
ID | 姓名 | 相同的共同财产 |
---|---|---|
0 | A表中的名字 | A 表中的属性 |
1 | B表中的名字 | B 表中的属性 |
2 | C表中的名字 | C 表中的属性 |
此表中的数据是从 3 个(或通常为 X)表中检索的,每个表都有填充此表所需的数据。
填充此表而不进行排序和过滤会很容易,我只需在每个表的选择上使用
UNION
(或者我只是在应用程序层上连接结果)
但是如果我们想对这个表进行排序和过滤,限制页面大小并允许分页,最好的方法是什么? (基本上是这种表格视图的“常规”功能)在这种情况下,我们无法合并所有结果,因为我们不知道如何填充页面大小(假设页面大小为 30)。
例如,如果我想过滤具有按
some value
排序的值 id
的公共属性,检索第二页 - 来自 3 个联合的结果可能有 10、100 和 1000,我根本不知道如何正确混合这些结果。
我一直在考虑一些事情,比如将这 3 个表外部连接成一个大行,然后以某种方式为每个表过滤 3 列的属性,但是 这对我来说似乎不是一个好方法,而且这种方法的性能不会要么好,我相信.
最后我想补充一点,我们正在谈论 SQL,但是如果有任何针对 PostgreSQL 的扩展,它也可以使用。