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 27066 게시물 읽기
No. 27066
게시판 구현시 인덱스 및 페이지 문제
작성자
장성훈(exigent)
작성일
2007-10-03 09:56
조회수
2,595


테이블에 들어가는 정보는

1. 게시물id (pk)
2. 글쓴이id
3. 제목,내용
4. 쓴날짜
5. 게시판id
6. 카테고리id (0부터 12까지있는데 자료의 절반 정도가 0, 나머지의 절반은 1, 그 나머지가 2~12)
7. 권한 (0부터 4까지)

이렇게 있고
select의 where에 들어가는 조건은
제목과 내용 빼고 다른 필드들의 단독 또는 조합입니다.

이런 경우에는 제목, 내용을 제외한 모든 필드에 인덱스를 걸어주어야 하나요?

현재는 레코드가 250만건정도 들어가있고 데이블 크기가 1기가 정도 됩니다.

현재는 글쓴이id와 게시판id에만 index를 걸어주었는데,
쓴날짜, 카테고리id, 권한 필드에도 인덱스를 걸어주어야 할까요?

한 테이블에 인덱스를 많이 걸지 말라는 글을 본 것 같아서 걱정이 됩니다.
인덱스 파일도 엄청 커지는데 상관 없을런지요..

그리고 '권한'필드 같은 경우 0부터 4까지밖에 없어서 인덱스를 걸어주는게 별 의미가 없을 것 같기도 하구요..


또 문제는 페이징을 어떻게 해야 할지 전혀 감이 안 잡힌다는 것입니다. ([1] [2] [3] .... [3424] 이런거요)

현재 게시판 수는 약 만개정도 있고 각 게시판에 게시물이 평균 250개정도 있습니다.
그래서 게시판별로 볼때는 where절에 게시판id를 넣어서 인덱스를 탄 후에 limit a, b를 써서 가져와도 무리가 없는데요


모든 게시물을 한번에 볼때가 문제입니다.
권한이 0인것만 보기.를 하면 약 150만건정도 나오는데, 이걸 limit a,b 쓰자니 뒤페이지로 갈수록 답이 안 나오더군요 -_-;
구글링을 해보니 where 와 limit a 의 조합으로 하라는데 그런 방식으로는 '다음페이지로 이동'은 할 수 있어도
2828번째 페이지로 이동. 이런건 불가능하지 않나요?

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

게시판의 페이징은 웹 프로그래밍 분야에서 아주 오래된 주제이며, 이거다 하는 정답을 제시하기는 어렵습니다.

 

일반적으로 업데이트형과 비업데이트형, 반업데이트형 등으로 나누어지며, 해당 주제는 이곳보다는 웹 프로그래밍 관련 게시판에서 찾아보시는 것이 더 좋을 듯 합니다.

 

php를 사용하고 계신다면 phpschool의 강좌나 팁앤테크등을 찾아보시면 되겠습니다.

 

 

박현우(lqez)님이 2007-10-06 20:03에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
27071쿼리문 좀 봐주세요. 아무래도 이상이 없는듯 한데... [2]
보리나무
2007-10-05
2523
27069엑셀파일을 mysql로 임포트하는방법 [1]
강신영
2007-10-04
2755
270684.0.20a버젼 케릭터셋 변경
김홍회
2007-10-04
2609
27066게시판 구현시 인덱스 및 페이지 문제 [1]
장성훈
2007-10-03
2595
27065java 와 Mysql연동에 관한 질문입니다. [1]
김승현
2007-10-03
2023
27064[질문] mysql4.1 에서(utf-8) 데이타를 추출해서 sendmail 을 통해 메일 전송문제 [1]
김재흥
2007-10-03
2220
27063여러대의 DB를 replication이 가능한지요.. [2]
박성원
2007-10-02
2199
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.017초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다