2013-07-06 3 views
0

다음 select 명령이 있습니다. 이 테이블에는 약 2 백만 개의 레코드가 있습니다. 내가 찾고있는 레코드가 존재하지 않습니다. 그러나 선택 쿼리가 느립니다. 어떻게 속도를 올리나요? 다른 사람들은이 문제를 가지고 있는데, see here이지만 그 경우의 해결책은 적용되지 않습니다.레코드가 존재하지 않으면 PostgreSQL select 명령이 느립니다.

a1_value = 'AA' 
a2_value = "1" 
cur.execute("SELECT pk, a1, a2 FROM db_name WHERE a1 = %s AND a2 = %s LIMIT 1", (a1_value, a2_value)) 
+0

a1 및 a2에 인덱스 넣기 –

+0

죄송합니다, 새로운 걸까요? 무슨 소리 야? 코드 예제를 줄 수 있습니까? – user2104778

+1

postgresql을 사용하지는 않았지만 where 절에서 사용중인 열에 인덱스를 만들어야합니다. 그렇게하면 작업 속도가 빨라집니다 * [documenation] (http://www.postgresql.org/docs/9.1/static/sql-createindex.html) –

답변

0

답은 a1과 a2에 대한 인덱스입니다. 예 : cur.execute ("CREATE INDEX index_title ON db_name (a1, a2)") cur.execute ("선택 pk, a1, a2는 db_name에서 어디에서 a1 = % s AND a2 = % s LIMIT 1", (a1_value, a2_value))

관련 문제