반응형
SQLite를 사용하여 CREATE TABLE 문에서 열을 어떻게 인덱싱합니까?
내 CREATE TABLE 문에서 열을 어떻게 인덱싱합니까? 테이블은 다음과 같습니다.
command.CommandText =
"CREATE TABLE if not exists file_hash_list( " +
"id INTEGER PRIMARY KEY, " +
"hash BLOB NOT NULL, " +
"filesize INTEGER NOT NULL);";
command.ExecuteNonQuery();
파일 크기를 색인화하고 4 바이트를 원합니다.
원하는 것을 정확하게 할 수는 없지만 일부 RDBMS와 달리 SQLite는 트랜잭션 내에서 적절한 결과로 DDL을 수행 할 수 있습니다. 즉, 인덱스없이 file_hash_list를 보지 못하는 것에 대해 정말로 걱정한다면 다음을 수행 할 수 있습니다.
BEGIN;
CREATE TABLE file_hash_list (
id INTEGER PRIMARY KEY,
hash BLOB NOT NULL,
filesize INTEGER NOT NULL
);
CREATE INDEX file_hash_list_filesize_idx ON file_hash_list (filesize);
COMMIT;
또는 거기에있는 데이터베이스 라이브러리의 트랜잭션 프리미티브를 사용하는 등가물.
트랜잭션 외부에서 두 명령을 수행하는 것과 비교하여 실제로 얼마나 필요한지 잘 모르겠습니다 .
다른 사람들이 지적했듯이 SQLite의 인덱스는 모두 B- 트리입니다. 유형이 무엇인지 또는 열의 어떤 부분이 인덱싱되는지 선택할 수 없습니다. 인덱싱 된 전체 열이 인덱스에 있습니다. 범위 쿼리에는 여전히 효율적이며 실제로 원하는 것보다 약간 더 많은 디스크 공간을 차지할 수 있습니다.
나는 당신이 할 수 있다고 생각하지 않습니다. 두 번째 쿼리를 사용할 수없는 이유는 무엇입니까? 그리고 인덱스의 크기를 지정하는 것은 SQLite에서 불가능한 것 같습니다. 하지만 다시 SQ_Lite_;)
create index
myIndex
on
myTable (myColumn)
반응형
'program tip' 카테고리의 다른 글
술어는 무엇입니까? (0) | 2020.11.24 |
---|---|
Visual Studio Team System 2008에서 자동 병합 옵션을 비활성화 할 수 있습니까? (0) | 2020.11.24 |
Django : 화폐 가치를 어떻게 저장해야합니까? (0) | 2020.11.24 |
Lua에 파일이 있는지 확인 (0) | 2020.11.24 |
파이썬에서 컴파일 된 정규식 객체의 유형 (0) | 2020.11.24 |