MySQL 데이터베이스 최적화(5) - MySQL 쿼리 최적화
1. MySQL 쿼리 유형(기본적으로 모든 데이터 열이 쿼리됨)
1. 내부 조인
기본 다중 tables 해당 쿼리 방법, 두 테이블의 모든 필드 쿼리, 내부 조인 키워드는 생략 가능
2. 외부 조인 특정 테이블의 모든 데이터 쿼리
(1) 왼쪽 조인
첫 번째 테이블의 모든 필드를 쿼리하려면
(2) 오른쪽 조인
을 사용하면 두 번째 테이블의 모든 필드를 쿼리할 수 있습니다. null
3. 하위 연결
--内连接 查询出bookID=book类型ID的记录 SELECT tb.bookName,tby.bookTypeName FROM t_book tb,t_bookType tby WHERE tb.bookTypeId=tby.id; --外连接(左连接) SELECT tb.bookName,tby.bookTypeName FROM t_book LEFT JOIN t_bookType ON t_book.bookTypeId=t_bookType.id where ......; --外连接(右连接) SELECT tb.bookName,tby.bookTypeName FROM t_book RIGHT JOIN t_bookType ON t_book.bookTypeId=t_bookType.id where ......; --子查询 SELECT * FROM t_book WHERE booktypeId IN (SELECT id FROM t_booktype); SELECT * FROM t_book WHERE booktypeId NOT IN (SELECT id FROM t_booktype); SELECT * FROM t_book WHERE price>=(SELECT price FROM t_pricelevel WHERE priceLevel=1); SELECT * FROM t_book WHERE EXISTS (SELECT * FROM t_booktype); SELECT * FROM t_book WHERE NOT EXISTS (SELECT * FROM t_booktype); SELECT * FROM t_book WHERE price>= ANY (SELECT price FROM t_pricelevel); SELECT * FROM t_book WHERE price>= ALL (SELECT price FROM t_pricelevel);
두 , 쿼리 최적화 아이디어
1. 왜 느린가요?
쿼리를 최적화하기 전에 쿼리 속도를 느리게 만드는 원인을 이해해야 합니까? 쿼리가 n개의 하위 작업으로 구성된 작업으로 간주되면 하위 작업이 증가함에 따라 SQL 관련 쿼리도 증가합니다. 실제로 쿼리를 최적화한다는 것은 일부 하위 작업을 제거하거나 하위 작업 실행 횟수를 줄이는 등 이러한 n개의 하위 작업을 최적화하는 것을 의미합니다.
2. 하위 작업은 무엇인가요?
Mysql에는 일반적으로 쿼리를 실행하는 여러 프로세스가 있습니다. 클라이언트가 서버에 쿼리 문을 보냅니다. -> 서버가 쿼리 문을 구문 분석하고 -> 쿼리 실행 실행은 데이터베이스 엔진 호출, 정렬, 그룹화 등의 데이터 처리 과정을 포함하여 전체 수명주기에서 가장 중요한 단계입니다.
3. 최적화 방향
1. 쿼리 데이터 최적화
쿼리가 비효율적인 이유: 접근 너무 많은 데이터를 요청하여 필연적으로 많은 스크리닝 작업이 필요합니다.
오류 시도:
select * from t_user t inner join t_role r inner join t_permission p where .....
오류 원인: 내부 조인을 사용하면 쿼리는 테이블의 모든 데이터 열 3개를 반환합니다.
올바른 방법:
select t.name,r.rolename,p.pname from t_user t inner join t_role r inner join t_permission p where
2. 세그먼트 쿼리
분할하여 정복하세요. 복잡한 분리 쿼리가 작은 쿼리로 나누어지고 각 쿼리는 결과의 작은 부분만 반환합니다.
오류 시도:
select * from t_user t where createData>DATE_SUB(NOW(),INTERVAL 3 MONTH) delete from t_user t where createData>DATE_SUB(NOW(),INTERVAL 3 MONTH)
오류 이유: 사용자 테이블의 데이터 양이 큰 경우 테이블의 대량 데이터를 한 번만 쿼리하거나 삭제하면 대기가 일시 중지됩니다.
올바른 방법:
select * from t_user t where createData>DATE_SUB(NOW(),INTERVAL 3 MONTH) limit 0,1000;
이전 1000개 데이터
3. 분해 관련 쿼리
오류 시도:
select t.name,r.rolename,p.pname from t_user t inner join t_role r inner join t_permission p where
오류 원인: 사용자가 테이블의 데이터 양이 많을 때 일회성 쿼리 또는 테이블의 많은 양의 데이터를 삭제하면 대기가 일시 중지될 수 있습니다.
올바른 방법 :
select * from t_user where t.age=10; select t. rolename from t_user where ... select t. pname from t_user where ...
分解关联查询表面上好像原本1个sql就干完的事,现在非得由3个sql去完成,实际上它比关联查询更有优势:
(1)提高缓存效率:对于第一条查询中age=10这条记录的所有字段已经缓存在mysql中,供第二个查询语句使用
(2)减少单个查询间的锁竞争
(3)减少冗余字段的查询
四、总结
在平时的应用中,尤其在在java开发提供了良好的数据持久化框架,对于mysql的查询优化并未过分关系,并且在使用sql执行查询时,可能也经常使用到多表关联查询,在使用这些sql拼接的过程中,对于sql优化不能不知晓,在应对高并发问题中,除了在web服务器前做负载、平行扩展等措施之外,数据库高并发的解决方案也与其并重,而这一个一个sql就是应多高并发的优化基础,不容小觑。
以上就是MySQL数据库优化(五)—MySQL查询优化的内容,更多相关内容请关注PHP中文网(www.php.cn)!

핫 AI 도구

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

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

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

Clothoff.io
AI 옷 제거제

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

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











웹 응용 프로그램에서 MySQL의 주요 역할은 데이터를 저장하고 관리하는 것입니다. 1. MySQL은 사용자 정보, 제품 카탈로그, 트랜잭션 레코드 및 기타 데이터를 효율적으로 처리합니다. 2. SQL 쿼리를 통해 개발자는 데이터베이스에서 정보를 추출하여 동적 컨텐츠를 생성 할 수 있습니다. 3.mysql은 클라이언트-서버 모델을 기반으로 작동하여 허용 가능한 쿼리 속도를 보장합니다.

Docker에서 MySQL을 시작하는 프로세스는 다음 단계로 구성됩니다. MySQL 이미지를 가져와 컨테이너를 작성하고 시작하고 루트 사용자 암호를 설정하고 포트 확인 연결을 매핑하고 데이터베이스를 작성하고 사용자는 데이터베이스에 모든 권한을 부여합니다.

Laravel은 웹 응용 프로그램을 쉽게 구축하기위한 PHP 프레임 워크입니다. 설치 : Composer를 사용하여 전 세계적으로 Laravel CLI를 설치하고 프로젝트 디렉토리에서 응용 프로그램을 작성하는 등 다양한 기능을 제공합니다. 라우팅 : Routes/Web.php에서 URL과 핸들러 간의 관계를 정의하십시오. 보기 : 리소스/뷰에서보기를 작성하여 응용 프로그램의 인터페이스를 렌더링합니다. 데이터베이스 통합 : MySQL과 같은 데이터베이스와 상자 외 통합을 제공하고 마이그레이션을 사용하여 테이블을 작성하고 수정합니다. 모델 및 컨트롤러 : 모델은 데이터베이스 엔티티를 나타내고 컨트롤러는 HTTP 요청을 처리합니다.

작은 응용 프로그램을 개발할 때 까다로운 문제가 발생했습니다. 가벼운 데이터베이스 운영 라이브러리를 신속하게 통합해야합니다. 여러 라이브러리를 시도한 후에는 기능이 너무 많거나 호환되지 않는다는 것을 알았습니다. 결국, 나는 내 문제를 완벽하게 해결하는 YII2를 기반으로 단순화 된 버전 인 Minii/DB를 발견했습니다.

MySQL을 우아하게 설치하는 열쇠는 공식 MySQL 저장소를 추가하는 것입니다. 특정 단계는 다음과 같습니다. 피싱 공격을 방지하기 위해 MySQL 공식 GPG 키를 다운로드하십시오. MySQL 리포지토리 파일 추가 : rpm -uvh https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm yum repository cache : yum 업데이트 설치 mysql : yum 설치 mysql-server startup startup mysql 서비스 : systemctl start mysqlctl start mysqlctl.

Centos에 MySQL을 설치하려면 다음 단계가 필요합니다. 적절한 MySQL Yum 소스 추가. mysql 서버를 설치하려면 yum install mysql-server 명령을 실행하십시오. mysql_secure_installation 명령을 사용하여 루트 사용자 비밀번호 설정과 같은 보안 설정을 작성하십시오. 필요에 따라 MySQL 구성 파일을 사용자 정의하십시오. MySQL 매개 변수를 조정하고 성능을 위해 데이터베이스를 최적화하십시오.

기사 요약 :이 기사는 Laravel 프레임 워크를 쉽게 설치하는 방법에 대한 독자들을 안내하기위한 자세한 단계별 지침을 제공합니다. Laravel은 웹 애플리케이션의 개발 프로세스를 가속화하는 강력한 PHP 프레임 워크입니다. 이 자습서는 시스템 요구 사항에서 데이터베이스 구성 및 라우팅 설정에 이르기까지 설치 프로세스를 다룹니다. 이러한 단계를 수행함으로써 독자들은 라벨 프로젝트를위한 탄탄한 토대를 빠르고 효율적으로 놓을 수 있습니다.

다른 프로그래밍 언어와 비교할 때 MySQL은 주로 데이터를 저장하고 관리하는 데 사용되는 반면 Python, Java 및 C와 같은 다른 언어는 논리적 처리 및 응용 프로그램 개발에 사용됩니다. MySQL은 데이터 관리 요구에 적합한 고성능, 확장 성 및 크로스 플랫폼 지원으로 유명하며 다른 언어는 데이터 분석, 엔터프라이즈 애플리케이션 및 시스템 프로그래밍과 같은 해당 분야에서 이점이 있습니다.
