2012-10-07 3 views
2

사용자가 웹 사이트에 가입하고 계정에 20 개의 이미지를 업로드 할 수있는 웹 사이트를 만들고 싶습니다. (사용자가 앞으로 무제한 이미지를 업로드 할 수 있도록 계획)데이터베이스에서 테이블 스캔을 완료하지 않으려면 어떻게합니까?

데이터베이스에 두 개의 테이블이 있습니다. 사용자 데이터 보관 용 테이블 테이블 이름 - 구성원 필드 -userid, 사용자 이름, 암호, 전자 메일. 이미지 경로를 표 이름 - 이미지 필드 저장하는 다른 - 그래서 테이블에서 이미지 경로를 검색하는 자신의 페이지에서 사용자의 이미지를 표시 할 수 있습니다 사용자 ID, ImagePath를

을 '이미지'

상황이 잘 작동하고 있습니다. 그러나 사용자 수가 증가하면 속도가 느려집니다. 예 - 50000 명의 사용자가있는 경우 단일 사용자가 업로드 한 이미지를 찾기 위해 모든 행을 확인해야합니다. 즉; 50000 userid * 20 images/user = 1000000은 테이블 행을 검색합니다. 이렇게하면 시스템이 느려지고 과부하가됩니다. 이것을 피하기 위해해야 ​​할 일은 무엇입니까?

+2

색인을 사용해야합니다. 설계 방법은 데이터베이스 구조에 따라 다릅니다. –

+0

hm ... 데이터베이스 인덱스에 대해 들었지만 사용 방법을 모른다. 그럴 수있는 좋은 튜토리얼 링크를 주실 수 있습니까? –

답변

3

,

CREATE TABLE dataTable 
(
    `userid` INT NOT NULL, 
    `username` VARCHAR(50) NOT NULL, 
    `password` VARCHAR(50) NOT NULL, 
    `email` VARCHAR(50) NOT NULL 
    CONSTRAINT tb_pk PRIMARY (`userID`), 
    CONSTRAINT tb1_uq UNIQUE (`username`) 
); 

CREATE TABLE pathTable 
(
    `userid` INT NOT NULL, 
    `imagepath` VARCHAR(50) NOT NULL, 
    CONSTRAINT tb_fk FOREIGN KEY (`userID`) REFERENCES dataTable(`userid`) 
); 

지정이 pathTableuserid 외래 키 등이 특정 테이블의 (데이터 테이블) 기본 키에 대한 참조 및 서버는 자동으로 색인을 생성하여 검색 속도를 향상시킵니다.

관련 문제