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 20949 게시물 읽기
No. 20949
인덱스 사용법에 대해서..질문
작성자
ㅇㅇ
작성일
2004-02-02 10:43
조회수
2,146

 

안녕하세요;

요즘 PHP를 다시 해보면서
이전에 만든 게시판을 테스트해봤는데;
셀 600 64Mb 서버에서 25만건 게시물 첫페이지가 무려 5초가 걸리더군요--a

그래서 튜닝을 해보려고 인덱스란 녀석을 배우고 있습니다.
대충 사용법과 개념에 대해서 알았습니다.
그런데 데이터가 입력될때 정렬되지 않았다면 어떻게 인덱스를 적용하는지 의문입니다.
익덱스가 적용된곳의 특정값이 1,2,3,4,5,6,7,8,9 이면 적용되겠지만
4,1,2,6,8... 이런형태면?..

그래서 제가 이렇게 된 데이터를 테스트해보니 인덱스를 나중에 줬을때 인덱스를 주는 쿼리가 매우 부하가 있더군요.

그래서 혹시 입력되는 칼럼의 데이터들을 따로 정렬시켜서 보관하는건가-_-; 하였습니다.

이부분에 대해서 설명 부탁드립니다.^^;

또하나는 index(a),index(b) 와 index(a,b)가 어떤점에서 다른건가요?
order by a desc, b asc 이런형태로 하려면 위의 것중 어느것을 적용시켜야 할까요?

움 질문이 난잡하네요;

그럼 좋은 하루 되세요.
이 글에 대한 댓글이 총 3건 있습니다.

DBMS 에서 자료를 입력하는 순서는 자료를 다룰때의 순서와는 전혀 무관합니다. 인덱스도 마찬가지로 입력한 순서와는 무관합니다.

사용한 쿼리의 경우라면 당연히 index (a,b) 로 해  주셔야 합니다. 그리고 oder 를 asc, desc 로 하는 것은 좋지 않습니다. 물론 어쩔수 없는 경우라면 방법이 없지만...

정재익(advance)님이 2004-02-02 13:02에 작성한 댓글입니다.

자료 입력 후 인덱스 선언이 이루어졌다면

OPTIMIZE를 하십시요.

 

optimize tables 테이블명;

하시면 됩니다.

인덱스 선언은 SQL에 따라 최적화 되어야 합니다.

기본적으로 WHERE절에 오는 필드들은 인덱스로 선언하는것이 좋구요,

단 'WHERE a=머 AND b=머머' 같이 사용된다면 다중열 인덱스를 사용하는것이 좋지요.

index(a,b) 처럼여...

 

또한 WHERE절에서 필들들의 조건 부합시 인덱스를 쓰기위해서는 기본연산자만 지원합니다. 'substring(a,1,4)=머머' 이런 구문(내장함수)이 들어가면 index를 타지 않습니다.

이형문(이형문)님이 2004-02-02 16:53에 작성한 댓글입니다.
이 댓글은 2004-02-02 16:55에 마지막으로 수정되었습니다.

1. 인덱스는 책 뒤의 색인과 같은 역할을 합니다. 만약 순서대로 늘 데이터가 입력된다면 인덱스는 필요가 없을 겁니다. 인덱스가 적용된 곳의 특정값이 4,1,2,6,8 이라고 하여도 인덱스(색인)에는 1,2,4,6,8로 지정이 되어 있습니다. 이 부분은 RDBMS의 인덱스 동작원리에 대해서 조금 더 공부하면 될 듯 합니다.

 

2. index(a), index(b), index(a,b) 의 차이점은 다음과 같습니다. index(a), index(b)의 경우 a칼럼과 b칼럼에 독립적인 인덱스를 만드는 것입니다. 당연히 인덱스 생성에 조금 더 코스트가 들어갈 거구요. 검색시에는 a칼럼을 조건절로 사용하면 a index를 b칼럼을 조건절로 사용하면 b index를 사용합니다. a,b를 동시에 사용할 경우에는 index merge가 일어나게 됩니다.

index(a,b)인 경우에는 인덱스 생성 단계부터 a,b 로 정렬된 index가 생성되게 됩니다. 이 경우의 가장 큰 문제점은 b값으로 조건을 걸 경우에 index를 사용하지 못하게 되는 것입니다. 그 외의 insert/delete/update시의 비용은 적게 발생하며, a/b 값으로 검색시에도 비용이 적습니다. 자세한 내용은 역시 RDBMS의 인덱스 작동 원리를 살펴보심이..

 

장홍창(changaya)님이 2004-02-02 23:29에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
20952MySQL 4.0.17 에서 InnoDB는 과연 어느정도의 능력을 발휘할까요? [1]
이형문
2004-02-02
1575
20951rpm으로 설치했는데 삭제가 안되네요..도와주세요 [1]
kyongmi
2004-02-02
803
20950변경 데이터타입 [2]
나승수
2004-02-02
1582
20949인덱스 사용법에 대해서..질문 [3]
ㅇㅇ
2004-02-02
2146
20948ㅊㅊㅊ [1]
나승수
2004-02-02
1027
20947mysql ---> mssql로 변환시키는 방법 좀..ㅠㅠ [3]
우상..
2004-02-02
1491
20946정말 방법이 없는건가요? 제발... [2]
왕초보
2004-02-02
1069
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.018초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다