2017-12-22 27 views
0

나는 앱, 다소 스케줄러를 최적화하고 싶습니다. 나는 완료된, 과 같은 다른 상태의 작업이보관 됨 (삭제 후)입니다. 앱 로직은 처음 두 가지 유형을 가장 많이 사용하므로 동일한 테이블에 두어야합니다. & ( 할 필요가있을 때마다)을 선택하거나 아카이브 된 항목 만 복사 테이블을 만들어야합니다. 보관 됨이 거의 사용되지 않기 때문에 "쉽게"를 선택하십시오.SQLite 2 작은 테이블 대 하나의 큰

sqLite db 크기가 어떻게해서든지 db 연산에 영향을 주는지 아닌지? 큰 테이블 (전체 db 중 하나만)에서 선택 작업을 테스트했으며 100K - 1M 행을 처리하는 데 오랜 시간이 걸렸습니다.

+0

하나 개를 사용하여 테이블을. 색인이 제대로되어 있습니다. 초고속, 표준화 및 쉬운. –

+0

Answer It It know, 나는 또한 관심이있다 !! @juergend – Xenolion

답변

2

SQLite는 큰 테이블에는 아무런 문제가 없으며 1 백만 개의 레코드가 실제로 크지는 않습니다.

논리적으로 의미가있는 경우 여러 테이블 만 사용해야 성능에 문제가 없습니다. 그래서 전용 테이블은 다음과 같이 수 :

tasks table 
--------------------------- 
id     (primary key) 
title     (indexed) 
description 
status (or status_id) (indexed) 

엄지 손가락의 규칙은 인덱스는 쿼리의 where 절에서 사용하는 모든 열입니다. 당신이 당신의 DB에 status와 같은 문자열을 사용하는 경우

당신은 다른 테이블을 사용하고이 테이블의 id에 외래 키와 tasks 표에서 참조 할 수 :

status table 
------------ 
id 
name