4.MySQL SQL調整3
1)最初からすべてのデータをインポートする悪いSQL文
(1)現状分析
explain select 사원.사원번호,
급여.평균연봉,
급여.최고연봉,
급여.최저연봉
from 사원,
(select 사원번호,
round(avg(연봉), 0) 평균연봉,
round(max(연봉), 0) 최고연봉,
round(min(연봉), 0) 최저연봉
from 급여
group by 사원번호
) 급여
where 사원.사원번호 = 급여.사원번호
and 사원.사원번호 between 10001 and 10100;
まず2行explain select 사원.사원번호,
(select round(avg(연봉), 0)
from 급여 as 급여1
where 사원번호 = 사원.사원번호
) as 평균연봉,
(select round(max(연봉), 0)
from 급여 as 급여2
where 사원번호 = 사원.사원번호
) as 최고연봉,
(select round(min(연봉), 0)
from 급여 as 급여2
where 사원번호 = 사원.사원번호
) as 최저연봉
from 사원
where 사원.사원번호 between 10001 and 10100;
2)悪いSQL文は効率を低下させる
(1)現状分析
explain select 사원.사원번호, 사원.이름, 사원.성, 사원.입사일자
from 사원
inner join 급여 on 사원.사원번호 = 급여.사원번호
where 사원.사원번호 between 10001 and 50000
group by 사원.사원번호
order by sum(급여.연봉) desc
limit 150, 10;
(2)問題
(3)調整の実行
explain select 사원.사원번호, 사원.이름, 사원.성, 사원.입사일자
from (select 사원번호
from 급여
where 사원번호 between 10001 and 50000
group by 사원번호
order by sum(급여.연봉) desc
limit 150, 10) 급여,
사원
where 사원.사원번호 = 급여.사원번호;
3)悪いSQL文は必要以上の情報をもたらす
(1)現状分析
explain select count(사원번호) as 카운트
from(
select 사원.사원번호, 관리자.부서번호
from (select *
from 사원
where 사원번호 > 300000
) 사원
left join 부서관리자 관리자
on 사원.사원번호 = 관리자.사원번호
) 서브쿼리;
(3)調整の実行
explain select count(사원번호) as 카운트
from 사원
where 성별 = 'M'
and 사원번호 > 300000;
削除4)大量のデータを取得してチェックインする悪いSQL文
(1)現状分析
explain select distinct 매핑.부서번호
from 부서관리자 관리자,
부서사원_매핑 매핑
where 관리자.부서번호 = 매핑.부서번호
order by 매핑.부서번호;
(2)問題
SELECTセクションにマッピングします.管理部門番号.部門番号で作成する場合は、同じ芝生で出力します.
->部署番号が同じかどうかを検討する必要があります
スレーブ・セクションとwhereセクションの結合を行った後、結合結果に対してDISTINCT操作を行い、結合前の事前重複除外を考慮する
explain select 매핑.부서번호
from ( select distinct 부서번호
from 부서사원_매핑 매핑
) 매핑
where exists(select 1
from 부서관리자 관리자
where 부서번호 = 매핑.부서번호)
order by 매핑.부서번호;
部門従業員マッピングテーブルのデータをインポートする場合は、重複する部門番号データを削除しておく
EXISTS演算子を使用して、「部門マネージャ」テーブルのすべてのデータをチェックせず、同じ部門番号を持つ場合、後続のデータにはアクセスしません.
id 2行は「行内ビュー」でindex for group-by:DISTINCTを使用し、I部ゲート番号インデックスでソートして重複データを削除する
id 1行は24行全体をインデックスプールスキャン後の重複データとして削除する部門従業員マッピングテーブルと結合であり、部門マネージャテーブルにexists演算子と比較する部門番号がある場合、同じ部門番号データは後でチェックしてスキップしないため、ExtraエントリにLoosScanと表示される
Reference
この問題について(4.MySQL SQL調整3), 我々は、より多くの情報をここで見つけました https://velog.io/@kimkevin90/4.-MySQL-SQL-튜닝-3テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol