데이터베이스 최적화: 단일 테이블 인덱싱과 인덱스가 없는 여러 개의 작은 테이블 평가
데이터베이스 최적화 영역에서 인덱스가 있는 단일 테이블이나 인덱스가 없는 여러 개의 작은 테이블이 자주 발생합니다. 이 주제를 조명하기 위해 특정 시나리오를 자세히 살펴보겠습니다.
시나리오:
사용자가 20,000명이고 행이 3,000만 개인 'statistics'라는 테이블을 생각해 보세요. user_id, 작업, 타임스탬프 등에 대한 열입니다. 기본 쿼리 작업에는 user_id를 기반으로 데이터를 삽입하고 특정 user_id에 대한 데이터를 검색하는 작업이 포함됩니다.
질문:
더 많을까요? 단일 '통계' 테이블에서 인덱스를 활용하거나 각 사용자에 대해 별도의 '통계' 테이블을 선택하여 인덱스가 필요하지 않도록 선택하는 것이 효율적입니까?
답변:
20,000개의 테이블을 사용하는 것은 유지 관리 문제와 성능 병목 현상을 초래하므로 권장되지 않습니다. 대신, MySQL 파티셔닝은 데이터 무결성을 희생하지 않고 성능을 최적화하는 솔루션을 제공합니다.
MySQL 파티셔닝:
<code class="sql">CREATE TABLE statistics ( id INT AUTO_INCREMENT NOT NULL, user_id INT NOT NULL, PRIMARY KEY (id, user_id) ) PARTITION BY HASH(user_id) PARTITIONS 101;</code>
파티셔닝의 이점:
고려 사항:
위 내용은 단일 테이블 인덱스와 여러 개의 작은 테이블: 분할이 대규모 데이터 세트에 대한 최적의 솔루션입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!