programing

내부 조인이 존재하는 것보다 더 나은 성능을 제공할 수 있습니까?

stoneblock 2023. 7. 8. 10:32

내부 조인이 존재하는 것보다 더 나은 성능을 제공할 수 있습니까?

저는 일련의 절차에 대한 성능 개선을 검토해 왔습니다. 최근 한 동료가 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