我有一张edge
这样的表:
-------------------------------
| id | arg1 | relation | arg2 |
-------------------------------
| 1 | 1 | 3 | 4 |
-------------------------------
| 2 | 2 | 6 | 5 |
-------------------------------
其中 arg1、relation 和 arg2 引用另一个object
表中对象的 id:
--------------------
| id | object_name |
--------------------
| 1 | book |
--------------------
| 2 | pen |
--------------------
| 3 | on |
--------------------
| 4 | table |
--------------------
| 5 | bag |
--------------------
| 6 | in |
--------------------
我想要做的是,考虑到性能问题(一个超过 5000 万个条目的非常大的表)显示object_name
每个边缘条目,而不是id
例如:
---------------------------
| arg1 | relation | arg2 |
---------------------------
| book | on | table |
---------------------------
| pen | in | bag |
---------------------------
执行此操作的最佳选择查询是什么?此外,我对优化查询的建议持开放态度 - 在表上添加更多索引等......
编辑:基于以下评论:
1)@Craig Ringer:两个表都PostgreSQL version: 8.4.13
只有索引id
。
2) @andrefsp:edge
几乎是 x2 倍object
。