검색 결과 사용자 ID 값 (1,2,3,4,5,6 ... 등)의 목록을 반환하는 다음 시나리오가 있습니다. 검색을 다시 실행하려면, 결과는 약간의 시간이 주어지면 바뀌는 것이 보장됩니다. 그러나 나는 미래에 사용될 검색 결과의 인스턴스를 저장해야합니다.향후 사용을위한 검색 결과 저장
기준이있는 search_id에 대한 레코드를 만들고 반환 된 모든 행을 연관된 search_id와 함께 다른 테이블에 삽입하는 현재 구현 (레거시)이 있습니다.
table search_results
search_id unsigned int FK, PK (clustered index)
user_id unsigned int FK
이 테이블은 수백만 개의 레코드로 성장했기 때문에 용인 할 수없는 접근 방법입니다. 나는 테이블을 파티션하는 것을 고려해 봤지만, 나는 수많은 파티션 (1000s)을 가질 것이다.
검색 결과가 다른 곳에서 사용되지 않으면 만료 된 기존 표가 최적화되어 모든 검색 결과가 다른 곳에서 참조됩니다.
현재 스키마에서 결과를 직렬화 된 배열 또는 XML로 저장할 수 없습니다. 검색 결과 정보를 효율적으로 저장하려고합니다. 레코드의 수에 부담을주지 않고 효율적으로 액세스 할 수 있습니다.
편집 : 답변 해 주셔서 감사합니다. 검색 자체를 실행하는 데 아무런 문제가 없지만이 경우 수신자 목록에 대한 검색 결과 집합이 반복적으로 사용됩니다. 저장 목적은 주어진 시간에 데이터의 스냅 샷을 정확하게 저장하는 것입니다.
더 이상 당신과 동의 할 수 없습니다 –