*EXISTS 하위 쿼리: SELECT 1 대 SELECT **
SQL에서 EXISTS 하위 쿼리를 사용할 때 일반적인 질문은 다음과 같습니다. 하위 쿼리에 SELECT 1 또는 SELECT *를 사용해야 합니까?
*SELECT 대 SELECT 1**
과거에는 EXISTS 하위 쿼리에서 SELECT *보다 SELECT 1이 더 효율적이라고 생각되었습니다. 그러나 이는 사실이 아니다. SQL Server는 하위 쿼리의 SELECT 목록에 지정된 열에 관계없이 시스템에 NO DATA를 반환하도록 EXISTS 검사를 최적화합니다.
마이크로소프트의 관점
Microsoft에 따르면 "EXISTS에 의해 도입된 하위 쿼리의 SELECT 목록에는 거의 항상 별표(*)가 포함되어 있습니다. 지정된 조건을 만족하는 행이 있는지 테스트하는 것이므로 열 이름을 나열할 이유가 없습니다. 하위 쿼리에서 "
데모
이를 확인하려면 다음 쿼리를 고려하세요.
<code class="language-sql">SELECT whatever FROM yourtable WHERE EXISTS( SELECT 1/0 FROM someothertable WHERE a_valid_clause )</code>
SELECT *가 선택한 열에 대해 실제로 작업을 수행하면 쿼리에서 0으로 나누기 오류가 발생합니다. 그러나 그렇지 않습니다. 이는 하위 쿼리의 SELECT 목록이 무시되고 행의 존재를 확인하는 데만 사용됨을 나타냅니다.
SQL 표준
SQL 표준은 이 보기도 지원합니다. "''이
결론
요약하면 EXISTS 하위 쿼리에서 SELECT 1 또는 SELECT *를 사용해도 성능 차이가 없습니다. 따라서 더 읽기 쉽고 코딩 스타일과 일치하는 옵션을 선택하는 것이 좋습니다.위 내용은 EXISTS 하위 쿼리: SELECT 1 또는 SELECT * – 성능에 중요한가요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!