실제 작업 에서 특히 생산 환경 에서 SQL 문장의 최적화 문 제 는 매우 중요 하 다.이것 은 데이터 뱅 크 의 성능 향상 에 도 현저 한 역할 을 한다.우 리 는 항상 기계 의 성능 문 제 를 불평 하고 방문 이 가 져 온 번 거 로 운 문 제 를 불평 한다.그러나 만약 에 우리 가 SQL 문 구 를 최적화 하지 않 으 면 모든 문 제 를 해결 할 수 있다 고 말 할 수 없 지만그러나 적어도 대부분의 문 제 를 해결 할 수 있 습 니 다.1.Top 정렬 문 제 는 표 의 특정한 필드 에 대해 정렬 을 한 다음 에 N 이름 을 가 져 야 합 니 다.그래서 우 리 는 다음 과 같은 SQL 문 구 를 쓸 것 입 니 다.select top 100 * from 순서 by Score desc 표 가 매우 크 면 이러한 조작 은 자원 을 매우 소모 합 니 다.왜냐하면 SQL 이기 때 문 입 니 다. SERVER 는 전체 시 계 를 정렬 한 다음 에 N 개의 기록 을 가 져 옵 니 다.이러한 조작 은 Temdb 에서 이 루어 지기 때문에 극단 적 인 경우 Log 에 이러한 오류 가 가득 하 다 고 보고 합 니 다.전체 표 의 정렬 을 피하 기 위해 서 는 Score 에 색인 을 만 드 는 것 만 해 야 합 니 다.이렇게 하면 Score 색인 의 엽 급 이 질서 가 있 기 때문에 Score 의 페이지 급 에서 100 개 를 가 져 오기 만 하면 됩 니 다.그 다음 에 책 갈피 에 따라 실제 기록 을 찾 으 면 DB 의 성능 이 크게 향상 된다.2.같은 날 문제.우 리 는 같은 날짜 와 같은 날 의 기록 을 자주 찾 아야 하기 때문에 우 리 는 다음 과 같은 SQL 문 구 를 다시 쓴다.declare @DateTime datetime set @DateTime=getdate() select * from 어디 convert(char(10),F_Time,120)=convert(char(10),@DateTime,120)그러나 이렇게 쓴 SQL 문 구 는 F 를 사용 할 수 없다 는 문 제 를 가 져 옵 니 다.Time 의 색인 입 니 다.가능 한 한 F 를 사용 하기 위해 서 입 니 다.Time 의 색인,우 리 는 위의 문장 대신 시간 대 검색 방식 을 사용 할 수 있 습 니 다.declare @start datetime declare @end datetime declare @datetime datetime set @datetime=getdate() set @start=convert(char(10),@datetime,120) -- 하루 의 시작 시간 set @end=dateadd(ss,-1,dateadd(d,1,@start)) -- 하루 의 종료 시간 select *from 시계. where F_Time between @start and @end 이렇게 하면 색인 을 사용 하지 않 는 문 제 를 해결 할 수 있 습 니 다. 3.색인 을 이용 하여 그룹 작업 을 합 니 다.]우 리 는 항상 특정한 필드 를 그룹 으로 나 누고 다른 필드 를 집합 작업 을 합 니 다.만약 에 우리 가 그룹 을 나 누 는 필드 에 대해 합 리 적 으로 색인 을 사용 하면 우리 가 그룹 을 나 누 는 속 도 를 가속 화 할 수 있 습 니 다.아래 는 Northwind 의 Orders 표를 예 로 들 면- orders 표 의 EmployeID 에 색인 이 있 습 니 다.select EmployeeID,count(*) from orders group by EmployeeID -- 실행 계획 을 보십시오.이 검색 은 EmployeeID 의 색인 을 이용 합 니 다.다음 검색 으로 변경 하면:select EmployeeID,sum(Freight) from orders group by EmployeeID -- 실행 계획 을 살 펴 보면 이 조 회 는 EmployeeID 의 색인 을 사용 하지 않 고 전체 표 스 캔 을 사 용 했 습 니 다.그 이 유 는 무엇 입 니까?Freight 가 EmployeID 의 색인 에 없 기 때문에 색인 을 통 해 결 과 를 얻 을 수 없습니다.책 갈 피 를 통 해 조회 하 는 비용 이 너무 높 으 면 SQL SERVER 는 전체 표 스 캔 을 선택 하 였 습 니 다.만약 우리 가 EmployeID 와 Freight 에 복합 색인 을 만 드 는 것 을 실행 한다 면?create index idx_EmployeeID on orders(EmployeeID,Freight) -- 두 번 째 조 회 를 다시 실행 합 니 다.실행 계획 보기.SQL SERVER 가 사용 하 는 우리 가 만 든 색인 입 니 다.색인 만 사용 하면 결 과 를 조회 할 수 있 고 우리 의 조회 속 도 를 크게 향상 시 켰 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다: