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';
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
[SQL] - 인덱스 개념1. 인덱스 책의 찾아보기와 같다. 많다고 좋은건 아님 MySQL이 판단해 준다. 2. 장점과 단점 장점 SELECT 문으로 검색하는 속도가 매우 빨라진다. 컴퓨터의 부담이 줄어들어 전체 시스템 성능이 향상 단점 추...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.