sql 최적화 - 색인 메커니즘

배경
데이터 양 이 계속 증가 함 에 따라 sql 을 어떻게 최적화 하 느 냐 가 큰 문제 가 되 었 습 니 다. 과정 학습 을 통 해 우리 가 평소에 주의 하지 않 았 던 문법 디 테 일 도 알 게 되 었 습 니 다. 여기 서 여러분 께 공유 하 겠 습 니 다!
sql 최적화
사고: 색인 을 교묘 하 게 사용 하여 전체 표 의 스 캔 을 피한다.자주 선택 하 는 필드 에 색인 체 제 를 추가 하지만 표현 식 작성 이 규범 에 맞지 않 기 때문에 데이터 베 이 스 는 색인 체 제 를 뛰 어 넘 고 전체 표 스 캔 을 실행 합 니 다. 그러면 데이터 베이스 검색 속도 가 느 려 집 니 다. 그래서 우 리 는 어떤 쓰기 가 전체 표 스 캔 을 초래 하 는 지 알 아야 합 니 다.
1. 최적화 1: (1) select 자 구 를 select * 로 쓰 지 마 십시오. 그러면 모든 필드 를 조회 하고 업무 와 무관 한 필드 를 포함 하기 때문에 데이터 뱅 크 의 IO 부담 을 가중 시 킬 수 있 습 니 다. 또한 이러한 쓰기 방법 은 데이터 베 이 스 는 표 구 조 를 먼저 취하 고 별 번 호 를 구체 적 인 필드 로 전환 한 다음 에 sql 문 구 를 실행 합 니 다.비록 우리 가 편리 하 다 고 쓰 여 있 지만 데이터 베 이 스 를 실행 하 는 것 은 조금도 효율 적 이지 않다 (2) 모호 한 검색 을 신중하게 사용한다.
// ename    
//            %,            ,         ,        
select ename from table where ename like '%S%';
//  :      ,           ,         
select ename from table where ename like 'S%';

2. 최적화 2 (1) 는 order by 정렬 필드 에 색인 을 설정 합 니 다.
select ename from table order by deptno;

(2) is null 과 is not null 을 적 게 사용 합 니 다.
// comm        
//            ,  is not null     ,         ,        
select ename from table where comm is not null;
//  ,          ,          0,          
select ename from table where comm >= 0;

3. 최적화 3 (1) 되도록 적 게 사용 하 세 요! =연산 자
//         20     ,           ,         ,       
select ename from t_emp where deptno != 20;
//  
select ename from t_emp where deptno > 20 and deptno < 20;

(2) or 연산 자 를 최대한 적 게 사용 합 니 다. or 이전 표현 식 은 색인 을 사용 하고 다음 표현 식 은 전체 표 스 캔 을 합 니 다.
//   
select ename from table where deptno = 20 or deptno = 30;
//  
select ename from table where deptno = 20
union all
select ename from table where deptno = 30;

4. 최적화 4 (1) 가능 한 한 in 과 not in 연산 자 를 적 게 사용 하고 그들 은 모두 관계 에 속 하거나 or 와 유사 하 다.
//   
select ename from table where deptno (20,30);
//  
select ename from table where deptno = 20
union all
select ename from table where deptno = 30;

(2) 조건문 의 데이터 형식 변환 을 피한다.
//  deptno     ,sql              ,       sql    
select ename from table where deptno = '20'

5. 최적화 5 (1) 왼쪽 표현 식 에서 연산 자 와 함 수 를 사용 하면 색인 을 무효 화 합 니 다.
//   
select ename from table where salary * 12 > 100000;
//  
select ename from table where salary > 100000/12;
//   
select ename from table where year(hiredate) >= 2000;
//  
select ename from table where hiredate > = '2000-01-01 00:00:00';

좋은 웹페이지 즐겨찾기