-- article 별 조회수 저장 테이블
CREATE TABLE ARTICLE_VIEW_COUNT
(
article_id BIGINT NOT NULL,
view_count BIGINT NOT NULL,
CONSTRAINT article_view_count_pk PRIMARY KEY (article_id)
);
-- 조회수 순으로 아티클 조회시 사용하기 위한 인덱스
-- ex. SELECT * FROM ARTICLE_VIEW_COUNT ORDER BY view_count;
CREATE INDEX article_view_count_idx ON ARTICLE_VIEW_COUNT (view_count);
ARTICLE_VIEW_COUNT 테이블에 조회수 upsert 쿼리를 통해 구성
INSERT INTO ARTICLE_VIEW_COUNT (article_id, view_count)
VALUES (NEW.article_mst_id, 1)
ON DUPLICATE KEY UPDATE view_count = view_count + 1;
아래 쿼리에서 Order by 시 인덱스(article_view_count_idx) 사용됨
SELECT * FROM ARTICLE_VIEW_COUNT ORDER BY view_count;
메인페이지 내 아티클 전체 리스트는 ARTICLE_VIEW_COUNT 테이블을 기준으로 각 카테고리에 맞게 미리 캐싱해두는 형태로 구현
이때 각 카테고리 별 필요한 데이터는 필요한 테이블과 조인 필요(백그라운드에서 미리 실행)
조회수를 저장할 신규 테이블을 두고 해당 테이블에서 select 하도록 수정
ARTICLE_VIEW_COUNT 테이블에 조회수 upsert 쿼리를 통해 구성
아래 쿼리에서 Order by 시 인덱스(article_view_count_idx) 사용됨
ARTICLE_VIEW_COUNT
테이블을 기준으로 각 카테고리에 맞게 미리 캐싱해두는 형태로 구현