이 글에서는 mysql에 대한 관련 지식을 제공합니다. 이 글에서는 주로 Left Join, Right Join, Inner Join 및 Hash Join의 작동 원리를 소개하고 하위 쿼리와 조인의 차이점을 분석하며 학습한 내용을 바탕으로 몇 가지 정보를 제공합니다. . 직장에서 익혀야 할 실무 능력을 살펴보겠습니다. 모두에게 도움이 되기를 바랍니다.
추천 학습: mysql 동영상 튜토리얼
1. MySQL 데이터베이스 JOIN 연결
여러 테이블에 인덱스를 생성하고, 다중 테이블 JOIN 및 하위 쿼리 문은 상대적으로 어렵습니다. 많은 개발자들은 JOIN이 SQL의 성능 효율성을 감소시킬 것이라고 무의식적으로 믿고 있으므로 다중 테이블 SQL을 단일 테이블 쿼리로 분할합니다. 개발자가 JOIN 구현 프로세스를 이해하지 못하기 때문에 이것이 SQL 실행 효율성에 영향을 미칠 것이라고 생각합니다.
테이블 R과 S가 조인되었다고 가정하면 조인 간의 테이블 연결은 일치를 위해 인덱스를 사용합니다.
테이블 R을 구동 테이블이라고 합니다. 테이블 R의 WHERE 조건으로 필터링된 데이터는 테이블 S의 해당 인덱스에 하나씩 쿼리됩니다. 테이블 R을 구동하는 데이터의 양이 많지 않다면 위의 알고리즘은 매우 효과적이다.
다음 세 가지 JOIN 유형 각각에 대한 구동 테이블은 무엇입니까?
SELECT * FROM R LEFT JOIN S ON R.x = S.x WEHRE ... SELECT * FROM R RIGHT JOIN S ON R.x = S.x WEHRE ... SELECT * FROM R INNER JOIN S ON R.x = S.x WEHRE ...
1, 내부 조인
INNER JOIN의 경우 구동 테이블은 테이블 R 또는 테이블 S일 수 있습니다. 왼쪽과 오른쪽이 공유하는 데이터를 표시합니다.
이 시나리오에서는 더 적은 양의 데이터를 쿼리해야 하는 사람이 테이블을 주도하게 됩니다. 다음 예를 살펴보겠습니다.
SELECT * FROM R INNER JOIN S ON R.x = S.x WHERE R.y = ? AND S.z = ?
2, LEFT JOIN
위 Left Join의 경우 구동 테이블은 Right Join의 왼쪽 테이블 R이고 구동 테이블은 오른쪽 테이블 S입니다. 왼쪽 테이블의 데이터를 쿼리해야 하는지, 오른쪽 테이블의 데이터를 쿼리해야 하는지를 결정하는 JOIN 타입입니다.
왼쪽 테이블의 모든 레코드를 반환하고 오른쪽 테이블의 동일 조인 필드가 있는 레코드를 반환합니다. 오른쪽 테이블에 일치하는 항목이 없더라도 왼쪽 테이블의 모든 행을 반환합니다.
SELECT * FROM R LEFT JOIN S ON R.x = S.x WHERE R.y = ? AND S.z = ?
3. RIGHT JOIN
위 Left Join의 경우 구동 테이블은 Right Join의 왼쪽 테이블 R이고, 구동 테이블은 오른쪽 테이블 S입니다. 왼쪽 테이블의 데이터를 쿼리해야 하는지, 오른쪽 테이블의 데이터를 쿼리해야 하는지를 결정하는 JOIN 타입입니다.
오른쪽 테이블의 모든 레코드와 왼쪽 테이블의 동일 조인 필드가 있는 레코드를 반환합니다. 왼쪽 테이블에 일치하는 항목이 없더라도 오른쪽 테이블의 모든 행을 반환합니다.
SELECT * FROM R RIGHT JOIN S ON R.x = S.x WHERE R.y = ? AND S.z = ?
2. MySQL 데이터베이스 Hash Join
1. Hash Join이란
MySQL의 두 번째 JOIN은 두 테이블 간의 연결 조건에 인덱스가 없을 때 사용되는 Hash JOIN입니다. 연산.
연결이 없으면 인덱스를 만들어도 괜찮나요?
일부 열이 선택도가 낮은 인덱스인 경우 데이터를 가져오기 위해 인덱스를 생성할 때 데이터를 정렬해야 하며, 이는 가져오기 성능에 영향을 미치며 테이블을 반환하는 데 문제가 발생합니다. 필터링된 데이터의 양이 많은 경우 직접 전체 테이블 스캔이 더 빨라집니다.
OLAP 비즈니스 쿼리(OLAP은 온라인 분석 처리, 데이터 분석에 사용이며 여러 데이터베이스 시스템의 정보를 동시에 분석할 수 있음)의 경우 해시 조인은 필수 기능입니다. MySQL 8.0은 Hash Join 알고리즘 지원을 시작하여 OLAP 비즈니스에 대한 지원을 강화합니다.
따라서 쿼리하는 데이터의 양이 너무 크지 않고 쿼리의 응답 시간이 분 단위로 필요한 경우 MySQL 8.0의 단일 인스턴스를 사용하여 빅 데이터 쿼리를 완료할 수 있습니다.
2. Hash JOIN 작동 방식
Hash JOIN은 MySQL 8.0의 실행 계획에 나타납니다. 먼저, 드라이브 테이블을 스캔하는 과정에서 해시 테이블이 생성됩니다. 두 번째 테이블을 스캔하면 연관된 각 레코드가 해시 테이블에서 검색됩니다. 발견되면 기록이 반환됩니다.
해시 조인 선택 드라이버 테이블과 중첩 루프 조인 알고리즘은 기본적으로 동일합니다. 두 작은 테이블 모두 드라이버 테이블로 사용됩니다. 드라이버 테이블이 크고 생성된 해시 테이블이 메모리 크기를 초과하면 MySQL은 자동으로 결과를 디스크에 덤프합니다.
3. 하위 쿼리
저를 포함한 상당수의 개발 학생들이 전통적인 JOIN 문 대신 하위 쿼리 작성을 선호한다는 것을 알았습니다.
하위 쿼리의 논리는 매우 명확합니다. JOIN도 이러한 요구를 충족시킬 수 있지만 LEFT JOIN은 대수적 관계이고 하위 쿼리는 인간 사고의 관점에서 이해하려는 경향이 더 많기 때문에 이해하기 쉽지 않습니다.
그러나 MySQL 8.0에서는 최적화 프로그램이 자동으로 하위 쿼리를 JOIN 실행 계획으로 최적화하여 성능을 크게 향상시킵니다.
SQL 실행 계획에만 집중하면 됩니다. 두 실행 계획이 동일하다면 성능에는 차이가 없습니다.
MySQL 8.0 이전에는 MySQL이 하위 쿼리를 완전히 최적화하지 못했습니다. 따라서 하위 쿼리의 실행 계획에 DEPENDENT SUBQUERY 힌트가 표시됩니다. 이는 하위 쿼리가 종속 하위 쿼리이고 하위 쿼리가 외부 테이블의 연결에 의존해야 함을 나타냅니다. DEPENDENT SUBQUERY는 수행 속도가 매우 느릴 수 있으며 대부분의 경우 두 테이블 간의 조인으로 수동으로 변환해야 합니다.
그래서 블로거는 팁여러분, 현재 MySQL 8.0 버전이 하위 쿼리를 작성할 수 있다면 하위 쿼리 최적화가 상당히 완료되었기 때문입니다.
MySQL 8.0 이전 버전의 경우 모든 하위 쿼리 계획의 SQL 실행을 확인해야 합니다. . DEPENDENT SUBQUERY에 대한 팁은 최적화되어야 합니다. 그렇지 않으면 비즈니스에 상당한 성능 영향을 미치게 됩니다. DEPENDENT SUBQUERY의 최적화는 일반적으로 테이블 조인을 위한 파생 테이블로 다시 작성됩니다.
추천 학습: mysql 비디오 튜토리얼
위 내용은 MySQL 원칙 요약: 왼쪽 조인, 오른쪽 조인, 내부 조인 및 해시 조인의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

todropaViewInmysql, "dropviewifexistsview_name;"및 TomodifyAview를 사용하고 "createOrreplaceViewView_NameAsselect ...". "

mysqlViewScaneFeficTicallyINGILIDESIGNPATTORNSLIKEADAPTER, DECIARATOR, FACTORY 및 OBSERVER.1) AdapterPatternAdAptSDataFromDifferentTablesinToAunifiedView.2) Decor

viewsinmysqlarebeneficialforsimplifyingcomplexqueries, envancingsecurity, dataconsistency, andoptimizing promperformance

toeteimpleviewinmysql, usethecreateviewstatement.1) definetheviewwithReateViewview_nameas.2) specifyTesLectStatementToreTrievesiredData.3) usetheViewLikeAtableForqueries.ViewsSimplifyDataAccessAndenHances, ButconSiderFormance

toCreateUserSinmysql, usethecreateuserstatement.1) foralocaluser : createUser'LocalUser '@'localHost'IndifiedBy'SecurePassword '; 2) foremoteUser : createUser'RemoteUser'@'%'reidentifiedBy'StrongPassword ';

mysqlviewshavelimitations : 1) 그들은 upportallsqloperations, datamanipulation throughviewswithjoinsorbqueries를 제한하지 않습니다

적절한 usermanagementInmysqliscrucialforenhancingsecurityandensuringfefficientDatabaseOperation.1) USECREATEUSERTOWDDUSERS,@'localHost'or@'%'.

mysqldoes notimposeahardlimitontriggers, butpracticalfactorsdeteirefectiveuse : 1) ServerConfigurationimpactStriggerManagement; 2) 복잡한 트리거 스케일 스케일 사이드로드; 3) argertableSlowtriggerTriggerPerformance; 4) High ConconcercencyCancaUspriggerContention; 5) m


핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

ZendStudio 13.5.1 맥
강력한 PHP 통합 개발 환경

SecList
SecLists는 최고의 보안 테스터의 동반자입니다. 보안 평가 시 자주 사용되는 다양한 유형의 목록을 한 곳에 모아 놓은 것입니다. SecLists는 보안 테스터에게 필요할 수 있는 모든 목록을 편리하게 제공하여 보안 테스트를 더욱 효율적이고 생산적으로 만드는 데 도움이 됩니다. 목록 유형에는 사용자 이름, 비밀번호, URL, 퍼징 페이로드, 민감한 데이터 패턴, 웹 셸 등이 포함됩니다. 테스터는 이 저장소를 새로운 테스트 시스템으로 간단히 가져올 수 있으며 필요한 모든 유형의 목록에 액세스할 수 있습니다.

Atom Editor Mac 버전 다운로드
가장 인기 있는 오픈 소스 편집기

MinGW - Windows용 미니멀리스트 GNU
이 프로젝트는 osdn.net/projects/mingw로 마이그레이션되는 중입니다. 계속해서 그곳에서 우리를 팔로우할 수 있습니다. MinGW: GCC(GNU Compiler Collection)의 기본 Windows 포트로, 기본 Windows 애플리케이션을 구축하기 위한 무료 배포 가능 가져오기 라이브러리 및 헤더 파일로 C99 기능을 지원하는 MSVC 런타임에 대한 확장이 포함되어 있습니다. 모든 MinGW 소프트웨어는 64비트 Windows 플랫폼에서 실행될 수 있습니다.

맨티스BT
Mantis는 제품 결함 추적을 돕기 위해 설계된 배포하기 쉬운 웹 기반 결함 추적 도구입니다. PHP, MySQL 및 웹 서버가 필요합니다. 데모 및 호스팅 서비스를 확인해 보세요.