articles
, journals
및 subscribers
의 세 엔티티가 있습니다. 데이터베이스에 데이터를 저장하는 방법에는 제한이 없습니다. 동일한 기사를 여러 저널에 동시에 게시 할 수 있습니다.반복없이 데이터를 쿼리하고 시간을 최소화하는 방법은 무엇입니까?
등록 된 저널의 모든 게시 된 기사를 선택하는 방법 을 발행일 및 반복순으로 정렬합니까?
가장 쉬운 방법 : 이 p_id
, j1_id
는, j2_id
, text
, date
가 subscribtions있는 테이블을 작성 게시물 :
기사와 테이블을 작성 다음은입니다.
예를 들어 쿼리 중복과
select posts.* from posts inner join follows on (j_id = j1_id or j_id
= j2_id) where u_id = 1 order by date desc
이 쿼리 데이터를 반환 : -f_id
, u_id
는 j_id
이 실행 (u_id는 테이블에서 사용자 사용자 ID입니다). 메커니즘 DISTINCT
또는 GROUP BY
을 사용할 수 있지만 중복을 제거하기 위해 추가 정렬 작업을 만듭니다.
UNION
메커니즘을 사용하여 다른 방법으로 수행 할 수 있지만 DISTINCT
도 사용합니다.
(select posts.* from posts inner join follows on j_id = j1_id where u_id = 1)
union
(select posts.* from posts inner join follows on j_id = j2_id where u_id = 1)
order by date desc
아마도 잘못된 방식으로 저장 방법을 선택했습니다.
실제로 큰 데이터에 필요한 시간을 최소화하기 위해이 문제에 대해 뭔가를 할 수 있습니까? PID, 텍스트, 날짜 저널 :
샘플 레코드를 게시 할 수 있습니까? –
샘플 데이터가 없습니다. 죄송합니다. –
테이블의 크기는 얼마나됩니까? –