알아보자
971
2018-11-19 08:57:06
7
411

조인한 쿼리 속도 개선


mysql로 작업을 하는데 toad에서 쿼리 돌리면 데이터는 빨리 나오는데 프로그램 상에서는 너무 느립니다.

테이블 한 개를 조인 빨리하는 건 커버링 인덱스라는 방법이 있는데 두 개 이상의 테이블에서 조인시에는 다른 방법이 필요할 거 같은데 어떤 방법이 있나요?

0
0
  • 답변 7

  • 왈와ㅏㄹ왕뢍왕왈
    535
    2018-11-19 09:09:42

    느린 이유가 어느 단계 인지 봐야 해요.

    커넥션, 실행, 패치, 비즈니스 로직 등..  각 단계마다 다르게 해결해야 합니다.


    0
  • basscraft
    2k
    2018-11-19 09:15:41

    보통 TOAD 같은 DB클라이언트에서는 조회한 모든 로우를 반환하지 않습니다.

    일부만 보여주고 스크롤을 하면 추가로 더 보여주는 방식으로 하기 때문에 속도가 빠른 것 처럼 느껴지지만

    같은 쿼리도 어플리케이션 에서 실행하면 모든 로우를 패치 할 때까지 기다려야 하니까 속도가 느려 질 수 밖에 없습니다.

    토드에서도 전체 반환 건수가 얼마나 되는 지 한번 확인해 보시고요

    모든 로우를 반환할 필요가 없다면 부분 범위 처리를 하도록 쿼리를 수정하시면 됩니다.

    0
  • LichKing
    12k
    2018-11-19 09:23:09
    실행계획 확인해보세요
    0
  • isNotEmpty
    2018-11-19 09:39:53

    출력되는 로우 개수 확인해보세요.

    토드에서는 보통 상위 50개 ~ 200개 정도를 출력하지만

    애플리케이션에서는 로우개수 제한없으면 전체 로우를 출력하게 됩니다.

    0
  • 알아보자
    971
    2018-11-19 09:44:56 작성 2018-11-19 09:45:21 수정됨

    토드에서는 처음에 출력을 제한하는 건 알고 있고

    프로그램에서 출력할 때 전체 로우를 출력하긴 해야 합니다.

    근데 프로그램에서 전체 로우 출력한다 해도 프로그램 상 보여지는게 1000개도 안되는데 너무 느려서요

    조인 하다보니 느려지는거 같은데 방법이 없나요?

    0
  • 20170923
    1k
    2018-11-19 10:13:18

    bangbang님이 말씀하신거처럼 심증보단 물증으로 확실하게 하시는게 나을거같은데요?

    우선 쿼리가 문제이신거 같으면 토드가 아닌 다른 툴로 해당 쿼리를 실행시켜보세요

    0
  • 포기해..
    665
    2018-11-19 10:53:55

    1000개정도의 데이타를 그리는데 걸리는 시간이 생각보다 깁니다.

    쿼리가 아무리 빨라져도 화면 그리는데 3~4초 정도는 걸릴 것 같네요

    페이징 처리 같은걸 해야 될겁니다

    0
  • 로그인을 하시면 답변을 등록할 수 있습니다.