グラフで構成されたデータベースがあります。アクセスする必要のあるテーブルは次のようになります。
Sno Source Dest
1 'jack' 'bob'
2 'jack' 'Jill'
3 'bob' 'Jim'
これSno
が主キーです。ソースと宛先は、グラフ内のノード間のエッジを表す2つの一意でない数値です。私Source
とDest
は文字列である可能性があり、必ずしも数値データ型である必要はありません。データベースには約500万のエントリがあり、Python用のPsycopg2でPostgresqlを使用して構築しました。
主キーのクエリは非常に簡単で迅速です。dest
ただし、特定のソースが接続されているすべてについて、このデータベースに頻繁にクエリを実行する必要があります。今、私はクエリを呼び出すことによってこれを達成します:
SELECT * FROM name_table WHERE Source = 'jack'
これは非常に非効率的であり(クエリごとに最大2秒)、一意ではないため、これを主キーにする方法はありません。これらの繰り返される値に基づいてインデックスを作成し、それをすばやくクエリする方法はありますか?