私はこのようなテーブルを持っています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
。