2011-11-15 2 views
1

하나의 테이블 만 포함하는 .sqlite db가 있습니다. 이 테이블에는 세 개의 열이 포함되어 있으며 한 열만 인덱싱하는 데 관심이 있습니다.인덱싱 SQLite 데이터베이스 : 빈 인덱스?

문제는 색인 생성을 수행 할 때 빈 색인 테이블!

Firefox 용 SQLite Manager 부가 기능을 사용하고 있습니다. 다음은 색인 생성을 확인하기 전에 나타나는 구문입니다.

CREATE INDEX "main"."tableIndex" ON "table" ("column1" ASC) 

여기에 어떤 문제가 있는지 알 수 없습니다. 나는이 도구를 오래 전부터 사용해 보았는데 다른 데이터베이스를 사용해도 잘 작동한다.

의견이 있으십니까?

답변

3

데이터베이스 색인의 내용을 "볼"수 없습니다. 색인에 해당하는 테이블이나 테이블과 같은 구조는 작성되지 않습니다. 따라서 비어있는 것을 볼 수있는 것은 없습니다.

CREATE INDEX 명령이 오류없이 실행 된 경우 데이터를 추가, 제거 및 업데이트 할 때 인덱스가 생성되었으며 SQLite에서 계속 유지 관리 할 수 ​​있습니다.

아래의 설명에 따라 @iturki는 실제로 전체 텍스트 검색을 위해 색인을 작성하려고합니다. SQLite는 전체 텍스트 검색을위한 몇 가지 확장을 지원하지만 표준 CREATE INDEX 명령을 통해 구현되지는 않습니다. this reference을 참조하십시오.

+1

저를 혼란시키는 것은 색인 생성 전후의 파일 크기입니다. 그것은 동일합니다! 모든 변경 사항이 없습니다. – iTurki

+0

인덱스를 만들 때'table'에 데이터가 있습니까? 그리고 데이터베이스 크기를 확인하기 전에 CREATE INDEX 문을'완결 '했습니까? –

+0

예, 300 개가 넘는 레코드가 있습니다. 그리고 네, 그 진술을 저지른 것입니다. – iTurki

1

VACUUM 쿼리를 사용해보십시오. 그것은 완전히 sqlite 데이터베이스 파일을 다시 작성하고 모든 색인을 다시 작성하고 모든 ROWID 등을 재설정합니다.

+0

좋습니다. 어떻게 사용하는지 설명해 주시겠습니까? – iTurki

+0

아주 쉽습니다. 그냥 입력 : ** VACUUM; ** 탭에서 (또는 해당 Firefox 추가 기능에서 SQL 쿼리를 수행하는지 여부) 및 실행 (빈 인덱스를 사용하여 해당 데이터베이스 파일을 열 때 수행) –

관련 문제