티스토리 뷰

먼저 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
링크