YAPP-Github / 24th-Web-Team-1-BE

9 stars 1 forks source link

아티클 조회수 관련 SQL 개선 사항 #221

Closed hun-ca closed 2 months ago

hun-ca commented 2 months ago

조회수를 저장할 신규 테이블을 두고 해당 테이블에서 select 하도록 수정

-- 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;

hun-ca commented 2 months ago

배포 후 아래 쿼리로 테스트 필요

SELECT * FROM ARTICLE_VIEW_COUNT ORDER BY view_count DESC LIMIT 10;