기본 문장 최적화 의 10 가지 원칙

데이터베이스 의 최 적 화 는 주로 두 가지 측면 을 포함 하 는데 하 나 는 SQL 프로그램 문장의 최적화 이 고 다른 하 나 는 데이터베이스 서버 와 설정 의 최적화 이다.조회 문 최적화 는 주로 두 가지 측면 과 관련된다. 일부 보편적으로 지 키 는 원칙 과 조회 문 구 를 어떻게 성능 분석 하 는 지 하 는 것 이다.
 
기본 문장 최적화 의 10 가지 원칙
      데이터 뱅 크 의 응용 에서 프로그래머 는 끊 임 없 는 실천 을 통 해 많은 경험 을 총 결 했 는데 이런 경험 은 보편적으로 적용 되 는 규칙 이다.모든 프로그래머 들 은 SQL 을 구성 할 때 좋 은 습관 을 기 르 는 것 을 이해 하고 기억 해 야 한다.다음은 비교적 중요 한 원칙 10 가 지 를 열거 합 니 다.
원칙 1: 열 에서 연산 하 는 것 을 최대한 피하 면 색인 이 실패 할 수 있 습 니 다.예 를 들 어 원문 은:
SELECT * FROM t WHERE YEAR(d) >= 2011;

다음으로 최적화:
SELECT * FROM t WHERE d >= ‘2011-01-01’;

원칙 2: join 을 사용 할 때 소결 과 집 으로 큰 결과 집 을 구동 해 야 합 니 다.동시에 복잡 한 join 조 회 를 여러 query 로 나 누 었 다.join 여러 개의 시계 가 있 을 때 더 많은 잠 금 과 막힘 을 초래 할 수 있 기 때문이다.예 를 들 면:
SELECT * FROM a JOIN b ON a.id = b.id
LEFT JOIN c ON c.time = a.date
LEFT JOIN d ON c.pid = b.aid
LEFT JOIN e ON e.cid = a.did

원칙 3: like 모호 조회 의 사용 을 주의 하고%% 를 피한다.예 를 들 어 원문 은:
SELECT * FROM t WHERE name LIKE ‘%de%’

다음으로 최적화:
SELECT * FROM t WHERE name >= ‘de’AND name <= ‘df’

원칙 4: 조회 가 필요 한 필드 만 표시 하면 속도 에 현저 한 영향 을 미 치지 않 고 메모리 절약 을 고려 합 니 다.예 를 들 어 원문 은:
SELECT * FROM Member;

다음으로 최적화:
SELECT id,name,pwd FROM Member;

원칙 5: 대량 삽입 문 구 를 사용 하여 상호작용 을 절약 합 니 다.예 를 들 어 원문 은:
INSERT INTO t(id,name)VALUES(1,’a’);
INSERT INTO t(id,name)VALUES(2,’b’);
INSERT INTO t(id,name)VALUES(3,’c’);

다음으로 최적화:
INSERT INTO t(id,name)VALUES(1,’a’),(2,’b’),(3,’c’);

원칙 6: limit 의 기수 가 비교적 클 때 between 을 사용 합 니 다.예 를 들 어 원문 은:
SELECT * FROM article AS article RODER BY id LIMIT 1000000,10;

다음으로 최적화:
SELECT * FROM article AS article WHERE id BETWEEN 1000000 AND 1000010 RODER BY id;

Between 한정 이 limit 보다 빠 르 기 때문에 대량의 데 이 터 를 방문 할 때 between 또는 where 에서 limit 를 교체 하 는 것 을 권장 합 니 다.그러나 between 에 도 결함 이 있 습 니 다. id 중간 에 줄 이 끊 기거 나 중간 부분 id 가 읽 지 않 는 경우 총 읽 는 수량 이 예상 보다 적 습 니 다!
뒤의 데 이 터 를 비교 할 때 desc 방식 으로 데 이 터 를 역방향 으로 찾 아 전단 데이터 에 대한 스 캔 을 줄 이 고 limit 의 기수 가 작 을 수록 좋 습 니 다!
원칙 7: rand () 함 수 를 사용 하여 여러 개의 무 작위 기록 을 가 져 오지 마 십시오.예 를 들 면:
select * from table order by rand() limit 20;

다음 문장 으로 대체 하기:
Select * from ‘table’as t1 join(select rand(rand() * ((select max(id) from ‘table’)-(select min(id) from ‘table’))+(select min(id) from ‘table’))as id) as t2 where t1.id >= t2.id order by t1.id limit 1;

이것 은 20 번 을 실행 하 더 라 도 원래 의 문구 보다 효율 적 인 무 작위 기록 을 얻 는 것 이다.또는 php 로 무 작위 수 를 만 들 고 이 문자열 을 MySQL, MySQL 에 in 으로 조회 합 니 다.
원칙 8: null 사용 을 피하 십시오.
원칙 9: count (id) 를 사용 하지 말고 count (*) 를 사용 해 야 합 니 다.
원칙 10: 불필요 한 정렬 작업 을 하지 말고 가능 한 한 색인 에서 정렬 을 완성 합 니 다.

좋은 웹페이지 즐겨찾기