주문 테이블은 사용자 ID 또는 주문 ID를 기준으로 테이블로 구분됩니까?
주문 테이블은 사용자 ID 또는 주문 ID를 기준으로 테이블로 구분됩니까?
사용자는 주문 ID에 따라 여러 주문을 나누어 받을 수 있습니다
uiserid와 orderid는 일대다 관계이므로 order 테이블의 기본 키는 orderid이고 외래 키는 userid입니다
orderid를 사용하여 테이블을 분할할 때의 장점은 각 테이블의 크기가 크게 다르지 않다는 것입니다. 예를 들어, 주문량이 특정 값에 도달하면 시간에 따라 분할하거나 새 테이블을 생성한다는 단점이 있습니다. userid는 쿼리할 때 검색 조건으로 자주 사용되므로 Union 작업이 많이 발생합니다.
userid를 사용하면 상황은 반대가 됩니다. 테이블 크기는 일정할 수 없으며 시간이 지남에 따라 계속 커집니다. 그러나 쿼리가 단일 테이블이므로 매우 빠르다는 장점이 있습니다.
그래서 제 개인적인 생각으로는 nosql을 캐싱에 사용하지 않는다면 userid를 사용하여 테이블을 나누는 것을 추천합니다. 성능을 추구한다면 캐싱을 위해 memcache를 사용할 수 있습니다. orderid를 사용하여 테이블을 분할하더라도 두 번째 쿼리 중에 캐시를 직접 읽기 때문에 속도가 매우 빠릅니다. 자주 주문을 확인하는 사용자에게 친숙할 것입니다.
orderid를 사용하여 테이블 분리
orderid는 저장하기 쉽고 데이터베이스 로드가 비교적 일관됩니다. 그러나 데이터 집계는 더 어렵습니다.
사용자 ID는 집계하기 쉽습니다. 그러나 핫스팟 배포 문제가 발생하여 데이터 테이블 크기가 일관되지 않게 됩니다.
직접 선택하세요