그래프로 구성된 데이터베이스가 있습니다. 내가 액세스해야 표는 다음과 같습니다그래프 구조를 효율적으로 쿼리합니다.
여기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 쿼리 당 초까지) 나는이 기본 키를 만들 수있는 방법은 없습니다 . 이러한 반복 된 값을 기반으로 색인을 만들고이를 빠르게 쿼리 할 수있는 방법이 있습니까?
'소스'필드에 색인을 설정 했습니까? 여기에 설명 된대로 http://www.postgresql.org/docs/9.1/static/sql-createindex.html – fdomig
색인을 설정하려면 기본 키로 설정해야합니다. 고유 한 키가 필요하지 않습니까? 이 색인을 설정하지 않으면 어떻게됩니까? – Amitash
게시 한 문서를 읽어야합니다. 이것은 PostgreSQL을 이용한 인덱싱에 대해 * 모든 것을 알려줍니다. – fdomig