이 질문은 항목 (예 : 뉴스 기사)을 포함하는 모든 종류의 시스템과 이러한 항목을 보는 사용자에게 적용됩니다.(mysql)
사용자 테이블이 이고 기사 테이블이 ([id],[title],[text])
이고 모든 사용자가 보는 모든 기사가 포함 된 테이블이 있다고 가정 해 봅시다. ([user_id],[article_id])
.
내가하고 싶은 일은 이전에 읽지 않은 기사 만 효율적으로 사용자에게 보여줍니다. 현재 사용자가 이미 1M 기사를 읽으면
는 난 그냥
select id,title,text from articles where id not in (select article_id
from article_views where user_id = 123)
그러나 같은 일을 할 수있어? 쿼리는 다음과 같을 것입니다.
select id,... from articles where id not in (1,2,3,......1000000)
이렇게 생각하면 실용적이지는 않습니다.
또한, 사용자가 읽고 더 많은 기사 때문에 짜증 - 그가 것 느린 응답 시간 새로운 읽지 않은 기사를 검색하는 ..
다른 제안, DB-지혜를?
검색어가 너무 느리지 않습니다. 적절한 인덱스를 가정하면 데이터베이스는이를 조인으로 다시 작성합니다. @ Yuck은 올바른 답변을 가지고 있었지만 어떤 이유로 든 삭제했습니다. –