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
운영게시판
최근게시물
MySQL Q&A 16769 게시물 읽기
No. 16769
인덱스 사용에 관해 조언부탁드립니다.
작성자
성욱
작성일
2002-08-09 10:50
조회수
700

게시판의 코멘트 테이블을 나누었습니다.

target 은 글의 넘버고.. no 는 코멘트정렬에 필요한 필드입니다.

where 절에 오는 target 에 인덱스를 사용했구요.

explain 해보니 filesort 로 나옵니다.

 

SELECT filed FROM tbl WHERE target=num order by no asc;

 

해당 쿼리구요.

그래서 인덱스를 target,no 를 결합인덱스? 로 주었는데 .

일단, filesort 는 하지않더군요.

그런데, 이 경우 인덱스를 따로 주는 것이 좋을지 ..

의문이 생기더군요.

 

속도는 약 500개정도의 row 에서, 인덱스를 주었을 경우와

안주었을 경우.. 별 변화는 없는듯합니다.

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

당연히 그 경우 결합 인덱스를 주는게 좋습니다.

 

결합 인덱스를 쓰면 미리 target, no 필드를 기준으로 정렬되기 때문에 order by 시에도 data page를 읽을 필요없이 index 참조만으로 해결되므로 filesort 가 불필요해지므로 속도에 영향을 많이 줍니다. firesort를 별도로 정렬를 위해 불필요한 작업을 했다는 의미니까요.

 

그리고 500건 정도는 색인이 있으나 없으나 차이가 없습니다. 오히려 데이타 건수가 작을 때 색인을 쓰면 더 느려집니다.

 

그 이유는 table data file 에서 읽어 올때 I/O단위가 페이지라는 단위로 일종의 묶음 단위로 읽어오기 때문에 그렇습니다.

그렇게 작은 데이타 건수는 1-2번의 I/O만으로 다 읽어오기 때문에 색인이 있으나 없으나 큰 차이가 없습니다.

김주현님이 2002-08-09 13:47에 작성한 댓글입니다.

색인을 쓸 경우 더 느려지는 경우에 대해서 부연 설명을 하면

 

색인은 정렬되어 구성되지만 데이타 페이지는 디스크 상에 랜덤하게 저장되어 있을 수 있습니다.

 

일단 색인에서 데이타페이지의 주소를 참조하고 실재 데이타는 그 주소값으로 데이타파일에서 읽어오게 됩니다.

따라서 색인 검색 range 가 넓어지는 필드에 대한 검색 이를 테면 성별같은 경우는 엄청난 랜덤 엑세스가 일어나므로 색인을 쓰면 더 효율이 좋지가 않습니다.

 

예를 들어서 책의 색인 페이지를 참조하여 "~은", "~는", "~이", "~가" 같은 경우를 찾는다고 칩시다. (그런 어리석은 경우는 없겠지만...)

아마 색인보고 실재 페이지 찾아서 데이타 읽고 왔다갔다하면서 보느라 정신이 없을겁니다. 차라리 처음부터 순차적으로 페이지 뒤지면서 찾는게 훨씬 빠를겁니다.

그리고 앞에서 설명드렸듯이... DB는 일정 묶음 단위로 (책으로 치면 한꺼번에 10페이지 단위로...) 읽어온다는 것도 기억해주세요.

김주현님이 2002-08-09 13:54에 작성한 댓글입니다.

예를 들어 책이 100페이지 짜리고 1번에 10페이지 단위로 읽어온다면 10번 엑세스해서 모든 페이지를 다 읽어올 수가 있습니다.

 

만약 색인을 써서 엑세스하는게 이 비용을 상회(10번 보다 더 많이 )한다면 당연히 색인을 쓰지 않는게 더 효율이 좋습니다.

 

더 헷갈리게 해드린건 아닌지 모르겠네요.

제가 설명은 잼병이라....

 

즐거운 하루되세요.

김주현님이 2002-08-09 13:57에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
16775[질문]DB관련 [1]
이희종
2002-08-09
423
16772[질문] auto_increment 에서 중간에 빠진값 채우기.. [2]
ychi1129
2002-08-09
2081
16771[질문]mysql설정문제라는데요?? 부탁드립니다. [1]
신의손
2002-08-09
459
16769인덱스 사용에 관해 조언부탁드립니다. [3]
성욱
2002-08-09
700
16768정말 해결방법이 없나요? [1]
염경식
2002-08-09
493
16767mysql사용시 table update??? [3]
sunping
2002-08-09
965
16766mysql디비의 크기를 지정해 주려면... [1]
이준창
2002-08-09
484
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.019초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다