MySQL 쿼리 속도에 대해 문의드립니다 2.

조회수 605회

400만 row로 구성되어 있는 table은 다음과 같이 indexing 되어 있습니다.

index 1~2000: 기업1~기업 2000의 2013년 1월 1일 정보

index 2001~4000: 기업1~기업2000의 2013년 1월 2일 정보

index 4001~6000: 기업1 ~ 기업2000의 2013년 1월 3일 정보

이렇게 기업별 정보가 날짜로 끊어서 indexing 되어 있습니다.

제가 r로 불러온 구문은 2019년 12월 26일 기업 정보를 읽는 것으로

연속적인 2000개의 index를 불러올 것으로 예상됩니다.

연속적인 index를 불러오는 것이므로 index속도가 빨라야 되지 않나요.

400만 row 수 중에 2000개 row를 불러오는 경우입니다.

물론 딱 2000개는 아니고 2200여개인데 설명을 쉽게 하기 위해 2000개로 하였습니다.

  • index를 사용해서 조회를 했는지 execution plan 을 보세요. 정영훈 2019.12.29 16:47

1 답변

  • 좋아요

    0

    싫어요
    채택 취소하기

    "indexing"이라고 말씀하신 그것은 MySQL이나 기타 SQL에서 말하는 인덱싱이 아닐 가능성이 매우 높아 보입니다.

    혹시 날쿼리를 실행 가능한 환경이라면 (e.g. phpmyadmin이나 MS WorkBench, DBeaver 등이 깔려 있다) 다음 두 쿼리를 실행해서 결과를 스크린샷 및 텍스트 복사하여 수정 기능으로 올려 주세요. 그러면 이 쿼리가 뭐한다고 이렇게 느린 건지 다시 볼 수 있을 것 같습니다.

    쿼리1

    EXPLAIN /* 실행계획(execution plan)이라는 걸 알려주는 명령입니다. */
    SELECT /* EXPLAIN 바로 뒤에는 "내가 원래 실행하고 싶었던 쿼리"를 붙입니다. */
        code,
        name,
        ROUND(ChangeOP, 4) AS 12MFWOP,
        ROUND(ChangeNP, 4) AS 12MFWNP,
        ROUND(ChangeOPM, 4) AS 12MFWOPM,
        ROUND(ChangeROE, 4) AS 12MFWROE,
        ROUND(ChangeSales, 4) AS 12MFWSales,
        year,
        month,
        day
    FROM
        Basic12MFW1D
    WHERE
        year = 2019
        AND month = 12
        And day = 26;
    

    쿼리2

    /* 이 테이블의 구조를 볼 수 있는 mysql 명령입니다. */
    SHOW CREATE TABLE Basic12MFW1D;
    

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)