>  기사  >  데이터 베이스  >  mysql-MySQL 두 테이블 연관 쿼리가 느립니다.

mysql-MySQL 두 테이블 연관 쿼리가 느립니다.

WBOY
WBOY원래의
2016-08-20 08:47:561742검색

mysql

테이블 A와 B가 있습니다.
테이블 A는 모든 클라이언트의 로그, 개수는 200만개
테이블 B는 클라이언트 세부정보, 개수는 20,000개
이제 특정 조건을 충족하는 클라이언트의 로그를 필터링해야 합니다. SQL은 다음과 같습니다.

<code>SELECT A.*FROM `VIEW_DATA.basic_LOG.20160523` AINNER JOIN (SELECT AGT_ID FROM VIEW_AGENT where AGT_GRP_ID in (999)) B ON A.`BAS_AGT_ID` = B.AGT_IDORDER BY `BAS_TIME` DESC, `ID` DESC LIMIT 7;</code>

1 SIMPLE basic_log index IX_BASIC_LOG_BAS_AGT_ID IX_BASIC_LOG_BAS_TIME_ID 10 7 100 where
1 SIMPLE a eq_ref 사용 PRIMARY PRIMARY 4 cular3_data.20160523 .basic_log.BAS_AGT_ID 1 100
1 SIMPLE b eq_ref PRIMARY PRIMARY 4 cular3.a.AGT_GRP_ID 1 100 인덱스 사용

답글 내용:

1. (999)의 AGT_GRP_ID를 =999의 AGT_GRP_ID로 변경합니다.
2. 필수 항목에 대한 색인을 생성하세요

참조 출처:
MySQL에서 중첩된 조인을 최적화하는 방법 http://www.data.5helpyou.com/article272.html

두 테이블을 역순으로 작성한 후 내부 링크를 외부 링크로 변경하고 (999)의 AGT_GRP_ID를 =999;의 AGT_GRP_ID로 변경합니다.

A.*,B.AGT_ID 선택
FROM VIEW_DATA.basic_LOG.20160523 A ,VIEW_AGENT B 여기서 B.AGT_GRP_ID=999 및 A.BAS_AGT_ID = B.AGT_ID
ORDER BY A.BAS_TIME DESC, A.ID DESC LIMIT 7로 바꿔보세요

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