를 정렬하지 않는 출력을 설명 나는 다음과 같은 한쿼리 실행 시간 및
SELECT STRAIGHT_JOIN a.*
FROM b
INNER JOIN a ON a.b_id = b.b_id
INNER JOIN c ON dd.a_id = a.id
WHERE a.a_type_id = 164
AND a.status = 1
AND NOT EXISTS (
SELECT a2.*
FROM a a2
INNER JOIN c c2 ON c2.a_id = a2.id
INNER JOIN d d.a_id = a2.id
WHERE a.w_id = 567
AND c.ds_id = c2.ds_id
)
order by b.id
LIMIT 1;
는 설명 쿼리는 다음과 같은 결과
결과를 설명에서*************************** 1. row ***************************
id: 1
select_type: PRIMARY
table: b
type: index
possible_keys: index_b_on_b_id
key: PRIMARY
key_len: 4
ref: NULL
rows: 1
Extra:
*************************** 2. row ***************************
id: 1
select_type: PRIMARY
table: a
type: ref
possible_keys: PRIMARY,index_a_on_a_type_id,index_a_on_status,index_a_on_b_id,index_a_on_a_type_id_and_status
key: index_a_on_b_id
key_len: 4
ref: b.b_id
rows: 1
Extra: Using where
*************************** 3. row ***************************
id: 1
select_type: PRIMARY
table: c
type: ref
possible_keys: index_c_on_a_id
key: index_c_on_a_id
key_len: 4
ref: a.id
rows: 1
Extra: Using where
*************************** 4. row ***************************
id: 2
select_type: DEPENDENT SUBQUERY
table: c2
type: ref
possible_keys: index_c_on_ds_id,index_c_on_a_id
key: index_c_on_ds_id
key_len: 4
ref: c.ds_id
rows: 1
Extra:
*************************** 5. row ***************************
id: 2
select_type: DEPENDENT SUBQUERY
table: d
type: ref
possible_keys: index_d_on_a_id,index_d_on_w_id
key: index_d_on_a_id
key_len: 5
ref: c2.a_id
rows: 1
Extra: Using where
*************************** 6. row ***************************
id: 2
select_type: DEPENDENT SUBQUERY
table: a2
type: eq_ref
possible_keys: PRIMARY
key: PRIMARY
key_len: 4
ref: d.a_id
rows: 1
Extra: Using where; Using index
을 제공, 스캔 할 행은 하나지만 실제입니다 실행 시간이 1 초 이상입니다. 나는 Explain이 추정치이며 실제 실행은 다를 수 있지만 여기서 최적화 할 수있는 항목이 있는지 (새 인덱스 추가, 쿼리 다시 작성 등) 알고 있습니까?
A => 2,585,530
B => 10000
C => 2,585,525
D를 다음과 같이
테이블의 행 수있다 => 3350381
"제한 1"을 제거하면 평가되는 행 수는 얼마나됩니까? – Steve
@ 스티브, "제한 1"을 제거하면 20373 개의 행이 표시됩니다. – bikashp
감사합니다. 일반적인 답을 쓸 것입니다. 나는 당신이 MySQL Enterprise 고객이라고 생각하지 않습니까? – Steve