티스토리 뷰
먼저 mysql은 index 필드들을 따로 모아 놓기 때문에 이런방식을 이용해서
쿼리를 날리면 속도를 향상 시킬 수 있습니다.
공지 사항 게시판을 만든다고 가정하겠습니다.
Table Name : bbs_notice
필요한 예제
필드목록
uid : int 고유번호 자동증가
muid : int 회원고유번호
name : varchar 이름
email : varchar 이메일
subject : varchar 제목
ip : varchar IP주소
contents: text 내용
homepage: varchar 홈페이지 주소
singdate: datetime 등록일
위와 같은 정보들이 필요하다면 먼저 테이블을 2개로 나눕니다.
데이타형 테이블 2개 생성
■ bbs_notice // 테이타 형 : 테이블 1
uid,
muid,
name,
email,
subject,
ip,
homepage,
signdate
+-------+--------+-------------+-----------------------+--------------------+
| uid | muid | name | subject | signdate |
+-------+--------+-------------+-----------------------+--------------------+
| 1 | 1 | php사랑이 | 대한민국 코리아 파이팅| 2007-04-12 11:27:21 |
+-------+--------+-------------+-----------------------+--------------------+
| 2 | 1 | php사랑이 | 멋쟁이 php사랑이 | 2007-04-12 12:01:21 |
+-------+--------+-------------+-----------------------+--------------------+
■ bbs_notice_contents : // 데이타형 : 테이블 2
pid, // bbs_notice 의 uid 고유번호 값
conetents
+-------+----------------------------+
| pid | contents |
+-------+----------------------------+
| 1 | apmsoft 멋쟁이 |
+-------+----------------------------+
| 2 | 대한민국 php사랑이 |
+-------+----------------------------+
■ bbs_tableIndex
a. 게시판 테이블 명
b. 테이블명 마다 고유번호값을 붙여서 저장해 놓습니다.
uid, (smallint) (고유번호) (자동증가)
tname (varchar)
+-------+----------------------------+
| uid | tname |
+-------+----------------------------+
| 1 | bbs_notice |
+-------+----------------------------+
| 2 | bbs_faq |
+-------+----------------------------+
■ bbs_index //
a. 모든 게시판 고유번호 모음
b. 검색어 없이 쿼리를 때릴때 사용합니다.
uid, (int) (고유번호) (자동증가)
tid, (int) // bbs_게시판 들 고유번호
tname,(smallint) // bbs_tableIndex 고유번호
signdate(int) // bbs_게시판 등록일을 숫자형으로 변형해서 저장
+-------+-------------+---------+-----------+
| uid | tid | tname | signdate |
+-------+-------------+---------+-----------+
| 1 | 1 | 1 | 3493456789 |
+-------+-------------+---------+-----------+
| 2 | 1 | 2 | 3493456790 |
+-------+-------------+---------+-----------+
■ bbs_keyword
a. 게시판 제목, 내용 단어 저장 검색어 등록 테이블
b. word LIKE '대한%'
uid, (int) (고유번호) (자동증가)
word (varchar)
+-------+----------------------------+
| uid | word |
+-------+----------------------------+
| 1 | 대한민국 |
+-------+----------------------------+
| 2 | 코리아 |
+-------+----------------------------+
| 3 | apmsoft |
+-------+----------------------------+
| 4 | 멋쟁이 |
+-------+----------------------------+
| 5 | php사랑이 |
+-------+----------------------------+
| 6 | 파이팅 |
+-------+----------------------------+
bbs_keyword_list :
a. 검색어에 따른 게시판들 등록
b. 한 단어에 100개 200개 이하 또는 이상의 bbs 게시판 고유번호들이 존재하게 됩니다.
uid, (int) (고유번호) (자동증가)
pid, (int) // bbs_keyword 고유번호 저장
tid, (int) // bbs_게시판 들 고유번호
tname,(smallint) // bbs_tableIndex 고유번호
signdate(int) // bbs_게시판 등록일을 숫자형으로 변형해서 저장
+-------+--------+--------+---------+-----------+
| uid | pid | tid | tname | signdate |
+-------+-----------------+---------+-----------+
| 1 | 3 | 1 | 1 | 3493456789 |
+-------+-----------------+---------+-----------+
| 2 | 3 | 1 | 1 | 3493456790 |
+-------+-----------------+---------+-----------+
| 3 | 1 | 1 | 1 | 3493456789 |
+-------+-----------------+---------+-----------+
| 4 | 5 | 2 | 1 | 3493456790 |
+-------+-----------------+---------+-----------+
index(pid,tname)
검색은 '멋쟁이%' 또는 'php사랑이%' 와 같이 해야
index를 타게되며 속도또한 무지 빠릅니다.
위와 같이 고유번호와 index들로만 연결하면 속도 무지 빠릅니다.
200만개 중에서 하나의 고유번호를 찾아 오는것 일도 아닙니다.
부족하지만 속도향상을 위한 테이블 구성 였습니다.
'프로그래밍 > PHP' 카테고리의 다른 글
php이용 PDF 만들기에 대한 생각 (0) | 2008.06.22 |
---|---|
이미지 워터마크 구현 함수 (0) | 2008.06.22 |
php-다중 연결 소켓 통신(1) (0) | 2008.06.22 |
php-다중 연결 소켓 통신(2) (0) | 2008.06.22 |
php-소켓클래스(소스) (0) | 2008.06.22 |
- Total
- Today
- Yesterday