태블릿 탐색속도 오지게 느려서 like으로는 못해먹겠더라
비슷한 케이스 찾아다니다가 본 글이 잇는데..
일단 링크는 http://sqlite.1065341.n5.nabble.com/Tags-keywords-support-td79443.html 임
CREATE TABLE Images
(
ImageId INTEGER PRIMARY KEY,
name TEXT COLLATE NOCASE UNIQUE NOT NULL,
data BLOB NOT NULL
);
CREATE TABLE Tags
(
TagId INTEGER PRIMARY KEY,
name TEXT COLLATE NOCASE UNIQUE NOT NULL
);
CREATE TABLE ImageTags
(
ImageId INTEGER NOT NULL REFERENCES Images ON DELETE CASCADE,
TagId INTEGER NOT NULL REFERENCES Tags ON DELETE CASCADE,
PRIMARY KEY (ImageId, TagId),
UNIQUE (TagId, ImageID)
);
이게 쓴놈이 테이블 짠거고 탐색은
select *
from Images
where ImageId in (select ImageId from ImageTags join Tags on (TagId) where name='summer'
intersect
select ImageId from ImageTags join Tags on (TagId) where name='house');
이렇게 한다는데 나도 테이블 대충 비스무리하게 짜볼려고 하는데 이거 삽입을 어떤식으로 해야하는건지 감이 안옴
그냥 무식하게 어떤 이미지 A에 태그가 a,b,c 있다 하면
1. 이미지 테이블에 이미지 A 추가
2. 태그 테이블에 a,b,c 각각 추가
3. 이미지 태그 테이블에
3-1. A 이미지의 아이디 + a의 태그 아이디
3-2. A 이미지의 아이디 + b의 태그 아이디
3-3. A 이미지의 아이디 + c의 태그 아이디
이렇게 추가
이렇게 하는거임?
like보다 저게더 빠름? - dc App
제발 실행계획좀 봐라 어디에서 풀테이블스캔을하고 어디서 부하가 걸리는지 다나온다
실행계획이라는걸 처음 안데수..
넵 저 구조에서 삽입은 그렇게 하는거 맞고요, like도 %asdf% 이런식으로 쓰지말고 asdf% 이런식으로 쓰면 인덱스 타서 빨라집니다.