database.sarang.net
UserID
Passwd
Database
ㆍDBMS
MySQL
PostgreSQL
Firebird
Oracle
Informix
Sybase
MS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
DBMS Q&A 1192 게시물 읽기
No. 1192
sqlite 테스트 하면서 시간 잡아 먹는 query 때문에 올려봅니다.
작성자
이운억
작성일
2006-01-24 01:36
조회수
12,137

sqlite> .schema

create table tbl (

id integer primary key,

subj varchar(10),

spage int(7),

epage int(7)

);

create index idx1 on tbl(spage, epage);

sqlite> select * from tbl limit 10;

1|제 1장|1|3

2|제 2장|9|20

3|제 3장|33|39

4|제 4장|50|62

5|제 5장|73|95

6|제 6장|116|128

7|제 7장|193|211

8|제 8장|212|240

9|제 9장|241|273

10|제 10장|285|300

sqlite>

 

저희 상황에 맞게 책을 예로 들었습니다.

1페이지부터 3페이지 까지는 제 1장

9페이지부터 20페이지 까지는 제 2장

...

 

데이터에서 페이지가 겹치는곳은 없고 내용에 따라 범위는 들쑥날쑥 합니다.

이런 형식의 데이터가 30만건 들어 있을때,

특정 페이지를 조회할때 어떤 subject 가 나올건지 조회하는 겁니다.

 

select * from tbl where spage <= 849989 AND epage >= 849989;

 

이런식으로 조회를 할때, mysql 에서는 0.7초 정도 걸렸습니다.

explain 으로 확인해 보면 인덱스를 타지 않더군요 -_-;;

 

sqlite 에서는 어떨까 해서 시도해 봤는데 2초 정도 걸렸습니다.

이건 따로 확인할 방법이 없어서 다음처럼 확인하였습니다.

time -p ./sqlite2 mydata "select * from tbl where spage <= 849989 AND epage >= 849989;"

283330|제목849988|849988|849990

real 2.53

user 2.27

sys 0.26

 

 

mysql에서 0.7초가 병목으로 판단되어, 저부분만 sqlite 로 변경해 보려고 했는데,

인덱스를 타지 않는 경우에는 sqlite가 오히려 암울한 결과를 주네요.

 

어떻게 문제를 풀어야 할까요?

 

 

이 글에 대한 댓글이 총 1건 있습니다.

자답이네요^^;;

인덱스를 따로 주고, order by, limit 를 활용하니까 원하는 결과가 나오네요.

 

sqlite> .schema

create table tbl (

id integer primary key,

subj varchar(10),

spage int(7),

epage int(7)

);

create index idx1 on tbl(spage);

create index idx2 on tbl(epage);

 

time -p LC_ALL=ko_KR ./sqlite2 mydata "select * from ( select * from tbl where spage <= 900000 order by spage desc limit 1 ) where epage >= 900000 order by epage"

300000|제목899998|899998|900000

real 0.01

user 0.00

sys 0.00

 

이운억님이 2006-01-24 15:32에 작성한 댓글입니다. Edit
[Top]
No.
제목
작성자
작성일
조회
1197ACCESS에서 필드에 ASCII가 아닌 문자가 들어갔는지 확인하는 방법 [1]
이범수
2006-02-27
10432
1196직장인대출db부탁드립니다. [1]
최sk
2006-02-23
11902
1195Access 에서 쿼리문에 Like절에 문제가 있는걸까요? [1]
김남식
2006-02-16
11723
1192sqlite 테스트 하면서 시간 잡아 먹는 query 때문에 올려봅니다. [1]
이운억
2006-01-24
12137
1191[질문] Sql문 sort질문 [1]
2006-01-20
10128
1188MS sql를 배우고 있는 사람입니다.. [1]
msms
2006-01-02
10084
1187초보자 입니다.. 도와주세요
초보자
2005-12-24
10893
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2023 DSN, All rights reserved.
작업시간: 0.053초, 이곳 서비스는
	PostgreSQL v16.1로 자료를 관리합니다