우리는 레일스, 반응 및 포스트그레스를 사용하는 CMS를 가지고 있습니다. 우리는 테이블에 저장된 페이지와 조각을 가지고 있습니다. 각 페이지는 조각 세트 (배열 필드)로 구성됩니다.포스트 그레스 배열 필드가있는 내부 조인
여러 페이지에 걸쳐 사용할 수있는 조각이 있습니다.
의 우리가 페이지 ID 50806
렌더링되어 있다고 가정 해 봅시다. 우리의 프런트 엔드는 다음 형식의 데이터가 필요합니다. included_on_pages
을 찾을 그래서 현재
pieces: [
{id: B1fu5jthb, included_on_pages: [50808, 50806]},
{id: BJTNssF2Z, included_on_pages: [50808]}
]
는, 나는 페이지의 모든 조각을 가져 오기 위해 하나 개의 쿼리를 작성하고 특정 부분이 포함되어있는 페이지를 찾기 위해 각 부분에 걸쳐 반복하고 있습니다.
(기본적으로 N + 1 쿼리.) 그래서 제 질문, 대신의 각 부분에 걸쳐 반복하고이 포함 된 페이지를 찾을 수
Looping over each piece
select page_id from page_pieces where 'B1fu5jthb' = any(page_pieces.pieces);
select pieces from page_pieces where page_id = 50806
, 모든 조각을 가져 오려면 join statements
한 개를 쓸 수 있고 그 수는일 수 있습니까?