거의 모든 SQL과 마찬가지로, 그것은 실제로 여러 가지 요인에 달려 있습니다.
일반적으로 단일 테이블에 대한 쿼리는 두 테이블에 대한 쿼리보다 우수한 성능을 보입니다.
SELECT * FROM websites WHERE category_name = 'movies' ORDER BY category
:
"CATEGORY_NAME"에 대한 상대적으로 짧은 값으로
(8 자 이하 말)와 선도적 인 열 같은 적절한 인덱스 CATEGORY_NAME, 당신은 같은 쿼리의 좋은 성과를 얻을 수 있습니다
최적의 성능을 얻으려면 category_name에 ENUM
열을 고려하십시오. 그러나 이는 category_name
의 값이 열 정의의 일부로 "고정"됨을 의미합니다.
예를 들어 드롭 다운 목록 상자의 경우 distinct category_name 값 목록을 가져와야하는 경우 별도의 테이블 (예 : Categories 테이블)이 우선적으로 사용됩니다.
큰 문제는 "카테고리"가 시스템의 엔티티인지 여부입니다. 즉, 비즈니스에 중요한 개인, 장소, 사물, 개념 또는 이벤트의 "카테고리"는 고유하게 식별 될 수 있으며 정보를 저장해야합니다.
그렇다면 "엔터티"이며 별도의 테이블을 만들고 싶습니다.
더 큰 질문은 웹 사이트와 카테고리 간의 관계입니다. 웹 사이트에 둘 이상의 카테고리가있을 수 있습니까?
그렇다면 웹 사이트 및 카테고리와 관련된 관계 테이블을 생각해 볼 필요가 있습니다. 예를 들면 다음과 같습니다.
website_category (website_id, category_id)
엔터티 간의 "엔터티"및 "관계"는 데이터베이스 디자인에서 적절하게 나타납니다. 성능을 최적화하기 위해 조정하기 전에 먼저 올바르게 이해해야합니다.