order by 정렬 속도 0 4 1,578

by 밍밍밍밍 [SQL Query] mariadb order by [2022.06.13 09:54:49]


안녕하세요.

mariadb 10.1버전 

join후 order by시 속도가 느려서 질문남겨드립니다.

 

SELECT 
     x.iNo,
     x.iName,
     x.AcptNo,
     x.fee
     FROM (SELECT v.iNo, v.iName, a.AcptNo, sr.fee
     FROM Individual v 
  LEFT JOIN Accept a ON v.iNo = a.iNo
  LEFT JOIN SurgeryResult sr ON a.AcptNo = sr.AcptNo
  ) x 
  WHERE 1=1 ORDER BY x.AcptNo desc

 

order by가 있고 없고 속도차이가 많이 나는상황입니다.

join전에 order by를 하려고 해도 Individual 테이블에 AcptNo컬럼이 없는데

이런경우 어떻게 수정을 해야하나요?

by 마농 [2022.06.13 10:07:18]

1. 검색 조건이 없네요? 전체 대상으로 조인 및 정렬 할 수 밖에 없겠네요.
2. 아우터 조인을 하네요? 아우터 조인 해야 하나요?
3. 인라인뷰 쓰네요? 인라인뷰 써야 하나요?


by 밍밍밍밍 [2022.06.13 10:10:53]

1. 검색조건은 삭제여부밖에 없습니다 del_yn = 'N'

2~3. 꼭 써야하는건 아니고 테스트중이라 이것저것 해보고있습니다.


by 마농 [2022.06.13 10:18:33]

1. 아우터 조인을 습관적으로 사용하는 것은 좋지 않습니다.
- 이너조인이 기본이 되고
- 필요한 경우에 한해서 아우터 조인을 사용해야 합니다.
2. 불필요한 인라인뷰도 제거하시면 좋겠네요.
3. 정보가 부족합니다.
- 각 테이블 건수
- PK 및 인덱스 정보
- 테이블간의 관계
4. 이너조인으로 변경한다면?
- a 의 PK 인덱스를 이용한 정렬 동작 제거 효과가 있을 수 도 있습니다.
5. 전체 검색의 경우
- 필수 조건을 부여한다던가(기간 한정)
- 페이징 처리 등도 고려해야 합니다.


by 밍밍밍밍 [2022.06.13 10:35:47]

넵 말씀주신걸로 join이랑 인라인뷰 제거하고 다시해보겠습니다.

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입