我正在研究一种创建索引表的方法,而无需运行某种 cron 来按计划更新它。我想我可以使用视图来搜索可能是最好的选择。
我想要加入最多 5 个完全不相关的表。这就是我想要实现的目标:
表一(页数):
id | 名字 | 蛞蝓 |
---|---|---|
1 | 资源 | 资源 |
2 | 联系我们 | 联系我们 |
表二(博客):
id | 标题 | 描述 |
---|---|---|
4 | 如何使用网络 | 基本描述 |
7 | 世界你好! | 你好你好! |
期望查看结果:
id | 名字 | 搜索参数 |
---|---|---|
1 | 资源 | 资源 |
2 | 联系我们 | 联系我们 |
4 | 如何使用网络 | 基本描述 |
7 | 世界你好! | 你好你好! |
我希望保持行完整,但将它们重命名为最终的视图结果。如果需要,如果我需要更多信息,我还会添加其他 searchparam 列,例如 searchparam2、searchparam3...等。将多个表连接到一个视图中以便稍后查找的最佳方法是什么?
谢谢!
您可以使用
Common Table Expression
(又名 CTE)将具有不同列名的表合并到所需的结构中。解决办法如下:
WITH searchable AS (
SELECT
p.id::text,
p.name AS name,
p.slug AS searchparam
FROM pages p
UNION ALL
SELECT
b.id::text,
b.title as name,
b.desc as searchparam,
FROM blogs b
/* UNION ALL
SELECT ... continue the pattern as many table as you want
*/
)
SELECT * FROM searchable;
这是一个示例查询,如果您计划在生产中使用搜索功能,请考虑优化数据类型并创建适当的索引以获得更快的结果。