복붙노트

[SQL] 무엇 하위 쿼리를 EXISTS에서 쉽게 읽을 수있다? [닫은]

SQL

무엇 하위 쿼리를 EXISTS에서 쉽게 읽을 수있다? [닫은]

그것은 가독성의 문제입니다. 성능 차이가 없습니다. SQL 서버의 이전 버전은 아니지만 더 이상 바보 충분한 메타 데이터를 검색했다.

SELECT foo FROM bar WHERE EXISTS (SELECT * FROM baz WHERE baz.id = bar.id);
SELECT foo FROM bar WHERE EXISTS (SELECT 1 FROM baz WHERE baz.id = bar.id);

나는 나에게 직관적으로 보이지 않는 "재미 변형"NULL을 고려 여부입니다.

EXISTS 바에서 SELECT foo는 (바즈에서 선택 NULL을 WHERE baz.id = bar.id);  EXISTS 바 FROM foo에 SELECT (바즈 FROM 1/0을 선택 WHERE baz.id = bar.id);

지금 의견에 팝업 질문. 나는 가장 인기있는 RDBMS의 매뉴얼을 연구 :

코드 등등 검색 : 5,048 산출 결과 "1 [(EXISTS". 코드에 대한 SO에 대한 검색 : 생산량 5,154 결과 "SELECT * (EXISTS". 업데이트 링크 카운트 07.2015.

SELECT 그래서 * 인기 투표와 옆에 큰 상용 RDBMS가 있습니다. 나는 1보다 직관적 SELECT 찾을 수 있습니다. 그것은 "하나 이상 존재하는 경우"말하는 것과 같습니다. SELECT *는보다 직관적인가?

해결법

  1. ==============================

    1.직관적 인 당신이 정말로 치료를하지 않기 때문에 (.. SELECT * EXISTS입니다 ...

    직관적 인 당신이 정말로 치료를하지 않기 때문에 (.. SELECT * EXISTS입니다 ...

  2. ==============================

    2.난 아직도 사용 (SELECT * ...)를 EXISTS, 역사에 대한 (GBN : 그 히스테리해야합니까?) 이유. 기술적으로, 물론 차이는 없다; 옵티마이 / 플래너를 버리고 1 비트의 정보로 줄일 수 있습니다. 인간의 독자를 위해 더 특별한 * 외모, 그것은 특별한 상징으로 눈에 띄는, 그리고 값이나 상수로합니다. 또한, 나는 내 프로그램 (결국, 단지 0과 1을 유지한다)에 리터럴과 마법 상수의 양을 감소시키는 경향이있다.

    난 아직도 사용 (SELECT * ...)를 EXISTS, 역사에 대한 (GBN : 그 히스테리해야합니까?) 이유. 기술적으로, 물론 차이는 없다; 옵티마이 / 플래너를 버리고 1 비트의 정보로 줄일 수 있습니다. 인간의 독자를 위해 더 특별한 * 외모, 그것은 특별한 상징으로 눈에 띄는, 그리고 값이나 상수로합니다. 또한, 나는 내 프로그램 (결국, 단지 0과 1을 유지한다)에 리터럴과 마법 상수의 양을 감소시키는 경향이있다.

  3. ==============================

    3.의 맥락에서 SQL 최적화 그것만큼 뭔가를 반환으로 반환 중요하지 않은 것을 알고있는 존재한다. 그래서 당신에게 그것은 중요하지 않습니다.

    의 맥락에서 SQL 최적화 그것만큼 뭔가를 반환으로 반환 중요하지 않은 것을 알고있는 존재한다. 그래서 당신에게 그것은 중요하지 않습니다.

    직관적 인의 경우 : I *이 잘 될 것이라고 생각하지 않습니다.

    - 1 (또는 다른 것)을 의미 "조금이라도 부분이 있는지 여부를 확인"는 말로 요청하는 것이 좋습니다.

  4. from https://stackoverflow.com/questions/7710153/what-is-easier-to-read-in-exists-subqueries by cc-by-sa and MIT license