2012-08-07 4 views
1

약 400 개의 키 - 값 쌍을 가진 sqlite3 db가 있습니다. 나는이 값을 찾기 위해 2-3 백만 가지의 키를 가지고 있다고 가정 할 때이 db를 질의하는 선호되는 방법이 무엇인지 알고 싶습니다.수백만 개의 쿼리로 sqlite db를 쿼리하는 매끄러운 방법

내가해야하는 쿼리의 수와 관련하여 좋은 기준이 될지 잘 모르겠다. 내 검색어에 몇 개의 키를 포함시켜야합니까?

select * from db_name where col_name in (<optimum number of keys that I should search>) 

고마워요!

+1

테이블에 키를 넣고 '조인'할 수 있습니까? 아시다시피 SQL입니까? – JNK

+1

데이터베이스에 400 개의 키 - 값 쌍이 있지만 2-3 백만을 선택하려고합니까? 당신이 성취하고자하는 것은 분명하지 않습니다. – lanzz

+0

향후 조회를 위해 4 억 개의 키/값을 저장합니다. 한 번에 2 ~ 3 천만 개의 알려진 키 집합을 가져 오면 데이터베이스에있는 값을 찾아야합니다. 나는 그것이 지금 분명 희망한다 – Abhi

답변

1

@JNK는 언급했습니다.

in 절에있는 400 개의 문자열 리터럴을 가진 쿼리 select 쿼리가 제대로 실행되지 않을 수 있습니다. 조회 값에이 클러스터되고 있는지 (독특한) 확인

create table key_lookup 
(
    name varchar(32) not null primary key clustered , 
) 

:

는 뭔가를 테이블을 만듭니다. 내가 sqlite3를 모르는

select t.* 
from some_table t 
join key_lookup k on k.name = t.some_column 

하지만 some_table 키 열을 사용 가능한 인덱스가있는 경우 당신은 꽤 좋은 성능을해야한다 : 다음 테이블에 대한 당신의 선택 실행합니다. 최악의 경우, some_table에서 테이블 스캔을 가져오고 클러스터 된 인덱스는 key_lookup 테이블을 찾는데 너무 심하게 빠져서는 안됩니다.

관련 문제