[SQL] 여기서 () 절 성능 내부에 가입하고?
SQL여기서 () 절 성능 내부에 가입하고?
나는이 쿼리와 동일한 결과를 얻을 수 있지만, 어느 쪽이 가장 빠른, 가장 효율적인가요?
여기서 ()에서 또는 내 가입?
SELECT `stats`.`userid`,`stats`.`sumpoint`
FROM `stats`
INNER JOIN users
ON `stats`.`userid` = `users`.`userid`
WHERE `users`.`nick` = '$nick'
ORDER BY `statoylar`.`sumpoint` DESC limit 0,10
과
SELECT `stats`.`userid`,`stats`.`sumpoint`
FROM `stats`
WHERE userid
IN (
SELECT userid
FROM `users`
WHERE `users`.`nick` = '$nick'
)
ORDER BY `stats`.`sumpoint` DESC limit 0,10
해결법
-
==============================
1.당신의 SQL 엔진에 따라 다릅니다. 합리적인 쿼리 옵티 마이저가 최근 SQL 시스템은 대부분 같은 계획에 두 쿼리를 다시 작성합니다. 일반적으로 서브 쿼리 (두 번째 쿼리)를가 (첫 번째 쿼리)에 가입하여 다시 작성됩니다.
당신의 SQL 엔진에 따라 다릅니다. 합리적인 쿼리 옵티 마이저가 최근 SQL 시스템은 대부분 같은 계획에 두 쿼리를 다시 작성합니다. 일반적으로 서브 쿼리 (두 번째 쿼리)를가 (첫 번째 쿼리)에 가입하여 다시 작성됩니다.
그들은 외부 쿼리를 실행하기 전에 임시 메모리 테이블에 하위 쿼리를 실행할 수 있기 때문에 큰 쿼리 옵티 마이저이 없을 수 있습니다 간단한 SQL 엔진에서 빨리해야 가입 할 수 있습니다.
더 많은 데이터를 생성하는 - 제한된 메모리 풋 프린트가 일부 SQL 엔진 그러나, 하위 쿼리는 가입이 필요하지 않기 때문에 빠를 수 있습니다.
그래서, 요약, 그것은 의존한다.
-
==============================
2.성능이 SELECT를 EXPLAIN으로 두 쿼리를 실행 확인하는 .... AFAIK, 내부 조인 빠른 IN보다 BTW 테이블 엔진 MYISAM 또는 INNODB의 당신의 유형은 무엇인가
성능이 SELECT를 EXPLAIN으로 두 쿼리를 실행 확인하는 .... AFAIK, 내부 조인 빠른 IN보다 BTW 테이블 엔진 MYISAM 또는 INNODB의 당신의 유형은 무엇인가
-
==============================
3.또 다른 옵션은,이 존재한다. 나는 그래서 TSQL 사람이야 ....
또 다른 옵션은,이 존재한다. 나는 그래서 TSQL 사람이야 ....
SELECT s.[userid], s.[sumpoint] FROM stats AS s WHERE EXISTS ( SELECT 1 FROM users AS u WHERE u.[userID] = s.[userID] AND u.[nick] = '$nick' ) ORDER BY s.[sumpoint] DESC
나는 대부분의 엔진에서 사용할 수 EXISTS 생각합니다. 그것은 꽤 빨리 일반적입니다.
에서의 SQL 서버는 적어도 (2005 +)는 IN 사이에 전혀 성능 차이가없는 문제의 열이 Null을 허용하지 않습니다 경우에 존재한다.
아마 무관하지만 헤이 .....
from https://stackoverflow.com/questions/5274618/inner-join-and-where-in-clause-performance by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] 표에서 저장 프로 시저의 목록 (0) | 2020.06.15 |
---|---|
[SQL] 어떻게 MySQL의 집계 기능을 결합? (0) | 2020.06.15 |
[SQL] 삽입 MySQL은 ROW_NUMBER () 등가 [중복] (0) | 2020.06.15 |
[SQL] 정규 표현식은 쿼리의 모든 테이블 이름을 찾을 수 (0) | 2020.06.15 |
[SQL] 앱 엔진 자바 서블릿은 클라우드 SQL에 연결되지 않습니다 (0) | 2020.06.14 |