>데이터 베이스 >MySQL 튜토리얼 >mysql에 존재하는 것과 존재하는 것의 차이점은 무엇입니까?

mysql에 존재하는 것과 존재하는 것의 차이점은 무엇입니까?

清浅
清浅원래의
2019-05-07 10:20:3924909검색

mysql에서 presents와 in의 차이점은 다음과 같습니다. 1. in은 외부 테이블과 내부 테이블 사이의 해시 연결이며 내부 테이블이 먼저 쿼리됩니다. 2. presents는 외부 테이블에 대한 루프이고 그 다음에는 내부 테이블은 루프 후에 쿼리됩니다. 3. in 모양이 크면 사용이 더 빠르고, 내부 테이블이 크면 존재하는 것이 더 빠릅니다.

mysql에 존재하는 것과 존재하는 것의 차이점은 무엇입니까?

mysql에서 presents와 in의 차이점은 다음과 같습니다.

#对B查询涉及id,使用索引,故B表效率高,可用大表 -->外小内大
select * from A where exists (select * from B where A.id=B.id);
#对A查询涉及id,使用索引,故A表效率高,可用大表 -->外大内小
select * from A where A.id in (select id from B);

(1) presents는 외부 표면에서 루프를 수행하고, 루프가 반복될 때마다 내부 테이블(하위 쿼리)이 쿼리되므로 왜냐하면 테이블 질의에는 내부 Index를 사용하기 때문이고(내부 테이블은 효율이 높아 큰 테이블도 사용 가능), 아무리 큰 테이블이라도 외부 테이블을 순회하는 것은 불가피하기 때문에(작은 테이블을 사용해 보세요), 그렇다면 내부 테이블이 크므로 존재를 사용하면 효율성이 향상될 수 있습니다.

( 2)에서는 먼저 내부 테이블을 쿼리한 다음 내부 테이블 결과를 외부 테이블과 일치시킵니다. 테이블에 인덱스를 사용하고(외부 테이블은 매우 효율적이며 큰 테이블에서 사용할 수 있음), 내부 테이블은 내부 테이블의 크기에 관계없이 쿼리해야 하므로 in with 사용을 피하세요. 큰 외관은 효율성을 가속화할 수 있습니다.

(3) 쿼리된 두 테이블의 크기가 비슷한 경우 in과exist를 사용하는 것에는 큰 차이가 없습니다. 두 테이블 중 하나가 더 작고 다른 하나가 큰 테이블인 경우 더 큰 하위 쿼리 테이블에 존재하고 더 작은 하위 쿼리 테이블에 in을 사용합니다.

위 내용은 mysql에 존재하는 것과 존재하는 것의 차이점은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.