2009-11-12 6 views
1

SQL 쿼리를 디자인 할 때 전체 행 (선택 *) 만 선택하거나 필요한 필드 만 빠르게 선택하십시오. 결과가 다른 쿼리 (예 : 자연수 조인)에 공급되면 어떻게 될까요?쉬운 SQL 쿼리 성능 질문

답변

7

필요한 필드 만 선택하는 것이 일반적으로 더 빠릅니다. 특히 필드가 인덱스에 의해 "덮여"있으면 데이터베이스가 주 테이블이 아닌 인덱스에서 데이터를로드하면됩니다. 훨씬 적은 수의 페이지 가져옴).

3

필요한 항목 만 선택하는 것이 더 빠르며, 이는 열과 where 절에 더 빠릅니다.

+0

WHERE 절에 대한 일반적인 설명에주의하십시오. WHERE 절을 사용하면 테이블 전체를 읽는 것보다 속도가 느릴 수있는 아주 이상한 액세스 경로가 발생할 수 있습니다. 열 제한으로 이런 일이 발생할 수 있다고 생각하지 않습니다. – Thilo

+0

Aggreed. 그러나 일반적으로 반환되는 데이터를 제한하는 것이 더 나은 방법입니다. –

0

필요한 필드를 선택하는 것이 더 적은 데이터를 가져 오기 때문에 더 빠릅니다. 이는 쿼리 성능 속도를 높이기위한 일반적인 조언입니다.

-2

테이블을 여러 번 액세스하면 더 많은 수의 하드 구문을 갖는 오버 헤드가 필요한 것보다 많은 열을 선택하는 오버 헤드보다 크면 모든 열을 더 빠르게 선택할 수 있습니다.

예. 열 A..c가있는 테이블 foobar가 있다고 가정 해 보겠습니다. 모두 CHAR (1)입니다. 다음 문

SELECT a,b,c FROM foobar; 
SELECT a,b FROM foobar; 
SELECT a,c FROM foobar; 
SELECT a FROM foobar; 
SELECT b,c FROM foobar; 
SELECT b FROM foobar; 
SELECT c FROM foobar; 

의 다음 순서는

SELECT * FROM foobar; 

일곱 번을 실행하는 것보다 느려질 수 있습니다.

+0

네,하지만 7 가지 다른 버전도 캐싱 될 것이고 "cobot foobar를 선택하십시오"두 번째로 선택하면 소프트 파싱도 될 것입니다. – Thilo

+0

틸로 : 물론. 일반적으로 모든 것을 최적화하기 전에 성능을 측정 할 것입니다. –

+0

이것은 좋지 않은 인위적인 예입니다. SELECT *를 사용하지 마십시오. – gbn

1

SELECT *는 나중에 열을 추가 할 때 특히 위험합니다. UserID와 LastLogon 날짜가 필요한 루틴이 있다고 가정 해 보겠습니다. 마지막으로 UserNotes TEXT 열을 테이블에 추가하고 Bang! 그 작은 루틴은 이제 일부 (potentailly vaste) 텍스트 데이터를 가져올 것입니다, 전체 응용 프로그램의 성능이 저하됩니다 및 전체 선택 응용 프로그램에서 모든 선택 진술 문제를 치료하기 위해 고정해야합니다!

응용 프로그램이 필요로하는 열만 선택하십시오.