집 >데이터 베이스 >MySQL 튜토리얼 >mysql에 존재하는 것과 존재하는 것의 차이점은 무엇입니까?
mysql에서 presents와 in의 차이점은 다음과 같습니다. 1. in은 외부 테이블과 내부 테이블 사이의 해시 연결이며 내부 테이블이 먼저 쿼리됩니다. 2. presents는 외부 테이블에 대한 루프이고 그 다음에는 내부 테이블은 루프 후에 쿼리됩니다. 3. in 모양이 크면 사용이 더 빠르고, 내부 테이블이 크면 존재하는 것이 더 빠릅니다.
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 중국어 웹사이트의 기타 관련 기사를 참조하세요!