내부 조인이 존재하는 것보다 더 나은 성능을 제공할 수 있습니까?
저는 일련의 절차에 대한 성능 개선을 검토해 왔습니다. 최근 한 동료가 EXITES 대신 내부 조인을 활용하면 성능이 크게 향상되었다고 언급했습니다.
왜 이것이 가능한지에 대한 조사의 일환으로 저는 여기서 질문을 하려고 생각했습니다.
그래서:
- 내부 조인이 기존보다 더 나은 성능을 제공할 수 있습니까?
- 어떤 상황에서 이런 일이 일어날까요?
- 테스트 케이스를 증거로 설정하려면 어떻게 해야 합니까?
- 추가 문서에 대한 유용한 링크가 있습니까?
그리고 정말로, 사람들이 이 질문에 대해 가져올 수 있는 다른 경험들도 있습니다.
다른 가능한 성능 개선에 대한 제안 없이 구체적으로 이 문제를 해결할 수 있는 답변이 있으면 감사하겠습니다.우리는 이미 상당한 성공을 거두었고, 저는 단지 이 항목에 관심이 있었습니다.
어떤 도움이라도 주시면 감사하겠습니다.
일반적으로 말하면,INNER JOIN
그리고.EXISTS
다른 것들입니다.
전자는 두 테이블 모두에서 중복 및 열을 반환하고 후자는 하나의 레코드를 반환하며 술어인 경우 하나의 테이블에서만 레코드를 반환합니다.
내부 결합을 수행하는 경우UNIQUE
열에서 동일한 성능을 나타냅니다.
레코드 세트에서 내부 조인을 수행하는 경우DISTINCT
적용됨(중복 제거),EXISTS
일반적으로 더 빠릅니다.
IN
그리고.EXISTS
(에퀴조인 상관관계가 있는) 절은 보통 여러 개 중 하나를 사용합니다.SEMI JOIN
보통 a보다 더 효율적인 알고리즘DISTINCT
탁자 하나에
내 블로그에서 이 기사 보기:
그럴 수도, 아닐 수도.
- 동일한 계획이 생성될 가능성이 높습니다.
- 내부 조인은 동일한 출력을 얻기 위해 DISTINCT가 필요할 수 있습니다.
- EXISTES는 NULL과 거래합니다.
인sql server 2019
에 대한 질의.IN
,EXIST
,JOIN
문의 계획이 서로 다릅니다(올바른 인덱스가 추가된 경우).따라서 성능도 다릅니다.https://www.mssqltips.com/sqlservertip/6659/sql-exists-vs-in-vs-join-performance-comparison/ 기사에 나와 있습니다.JOIN
좀 더 빠릅니다.
추신: 그 질문이 sql server 2005(태그 내)에 대한 질문이었던 것으로 알고 있지만, 사람들은 대부분 기사 제목으로 답을 찾습니다.
언급URL : https://stackoverflow.com/questions/2177346/can-an-inner-join-offer-better-performance-than-exists
'programing' 카테고리의 다른 글
Git 브랜치 크리에이터 찾기 (0) | 2023.07.08 |
---|---|
SQL Server의 단일 행 MERGE/upert 구문 (0) | 2023.07.08 |
Windows Authentication 사용자로서 "OLE DB 공급자의 인스턴스를 만들 수 없습니다. (0) | 2023.07.08 |
다른 열의 정보에서 날짜를 계산하는 MySQL/MariaDB에 생성된 열을 추가하려면 어떻게 해야 합니까? (0) | 2023.07.03 |
-u 없이 업스트림으로 자동 설정되도록 깃 푸시를 구성하는 방법은 무엇입니까? (0) | 2023.07.03 |