[SQL] 어느 / 빠른 최고? SELECT * 또는 SELECT 컬럼 1, colum2, 3 열, 등
SQL어느 / 빠른 최고? SELECT * 또는 SELECT 컬럼 1, colum2, 3 열, 등
나는 SELECT는 * 당신이 특별히 필요한 열을 선택하는 것이 더 효율적이기 때문에 SQL 명령을 작성할 때 사용하는 나쁜 관행이 일반적으로 들었습니다.
나는 테이블의 모든 열을 선택해야하는 경우, 내가 사용한다
SELECT * FROM TABLE
또는
SELECT column1, colum2, column3, etc. FROM TABLE
효율은 정말이 경우에 문제가 있습니까? 난 당신이 정말 모든 데이터를 필요로 내부적 경우 SELECT *이 더 최적 것 같아,하지만 난 데이터베이스의 진짜 이해 이런 말을하고있다.
나는 가장 좋은 방법은이 경우에 무엇인지 궁금 해요.
업데이트 : 나는 아마 내가 모든 열은 항상 검색 할 필요가 알고 어디 새로운 열이 추가 된 경우에도, 하나 개의 테이블에서 데이터를 선택하고있을 때 나는 정말 SELECT *를 수행 할 것입니다 유일한 상황임을 지정해야합니다.
나는 그러나 본 적이 응답을 감안할 때,이 여전히 나쁜 생각처럼 보인다 SELECT *이 많은 동안 그 내가 생각에 대한 자세한 기술적 인 이유를 사용해서는 안됩니다.
해결법
-
==============================
1.특정 열을 선택하는 것이 더 좋다고 한 이유는 SQL Server가 아니라 테이블 데이터를 쿼리보다 인덱스에서 데이터를 액세스 할 수있는 가능성을 제기한다.
특정 열을 선택하는 것이 더 좋다고 한 이유는 SQL Server가 아니라 테이블 데이터를 쿼리보다 인덱스에서 데이터를 액세스 할 수있는 가능성을 제기한다.
여기에 내가 그것에 대해 쓴 글이다 : 진짜 이유는 쿼리가 나쁜 인덱스 범위이다 선택
이 데이터는 향후의 테이블 스키마를 만드는 관계없이 변경 동일한 데이터 구조를 얻는 것이다 소비 코드 때문에, 또한 변화에 덜 취약합니다.
-
==============================
2.모든 열을 선택하는 것이 당신의 사양을 감안할 때,이 시간에 약간의 차이가있다. 실현, 그러나, 데이터베이스 스키마 변경을한다. 당신도 모든 가능성에 불구하고, 테이블에 추가 된 새 열을 얻을거야 * 당신은 SELECT를 사용하는 경우 코드는 새로운 데이터가 사용 또는 현재까지 준비되어 있지 않습니다. 이 방법은 예기치 않은 성능과 기능 변화에 시스템을 노출됩니다.
모든 열을 선택하는 것이 당신의 사양을 감안할 때,이 시간에 약간의 차이가있다. 실현, 그러나, 데이터베이스 스키마 변경을한다. 당신도 모든 가능성에 불구하고, 테이블에 추가 된 새 열을 얻을거야 * 당신은 SELECT를 사용하는 경우 코드는 새로운 데이터가 사용 또는 현재까지 준비되어 있지 않습니다. 이 방법은 예기치 않은 성능과 기능 변화에 시스템을 노출됩니다.
당신은 작은 비용으로이를 기각 기꺼이,하지만 당신이해야합니다 여전히 필요가 없습니다 그 열을 실현할 수 있습니다 :
항목 # 1은 데이터 페이지가로드 (및 서버 캐시 스 래싱)의 원인이 몇 가지 잠재적 인 커버링 인덱스를 제거하는 등 많은 숨겨진 비용, 그렇지 않으면 피할 수 있습니다 들이지 행 / 페이지 / 테이블 잠금이 있습니다.
*가 대 열을 지정하고 유일한 잠재적 인 비용 절감이의 잠재적 인 비용 절감에 대해이 균형 :
항목 1의 경우, 현실은 당신이 그것을 씻어입니다, 그래서 당신은 어쨌든 추가 할 수있는 새 열을 사용하는 / 변경 코드를 추가 할 거라고합니다.
항목 2의 경우, 차이는 서로 다른 패킷 크기 나 네트워크 패킷 수로 당신을 밀어 거의 충분하다. 당신은 SQL 문을 전송 시간이 주된 문제가있는 지점에 도착하면, 당신은 아마 첫번째 문장의 속도를 줄일 필요가있다.
* 표시의 확장 어쨌든 테이블 (들) 스키마를 컨설팅하는 수단, 어쨌든 일이이 같은 항목 3의 경우, 절감 효과가있다. 그들이 스키마에 대해 유효성을 검사 할 필요가 있기 때문에 현실적으로, 열을 나열하면 같은 비용이 발생합니다. 즉 이것은 완전한 세척입니다.
특정 열을 지정할 때 항목 4를 들어, 쿼리 계획 캐시는 (당신이 지정한 바가 아니다) 컬럼의 다른 세트를 처리하는 경우에만하지만 더 큰 얻을 수 있습니다. 필요에 따라 서로 다른 계획을 원하기 때문에이 경우에, 당신은 다른 캐시 항목을 원하는 않습니다.
방식은 최종 스키마 수정의 얼굴에 문제 탄력성에 질문을 지정했기 때문에 그래서,이 모두가 온다. 당신이 (그런 일이) ROM에이 스키마를 연소하는 경우, 다음 * 완벽하게 허용됩니다.
하지만, 내 일반적인 지침은 단지 당신이 그들 모두를 요구하고 있지만, DBA와 스키마 진화 평균 몇 가지 새로운 열이 크게 쿼리에 영향을 미칠 수 나타날 수 있다는처럼 가끔 볼 것을 의미합니다 당신이 필요로하는 열을 선택해야한다는 것입니다 .
내 조언은 항상 특정 열을 선택해야한다는 것입니다. 그렇게 바로 그 일을하는 습관을 당신이 반복하는 일에 좋은 얻을 것을 기억하십시오.
스키마가 코드를 변경하지 않고 변경 될 수 있습니다 이유를 궁금해하는 경우 감사 로깅의 측면, 효과 / 유효 기간 및 규정 준수 문제에 대한 체계적 위해 DBA가 추가됩니다 다른 유사한 물건으로 생각한다. 불공정 변화의 또 다른 소스는 성능의 시스템에서 다른 곳 또는 사용자 정의 필드에 대한 불완전한 정규화입니다.
-
==============================
3.당신은 당신이 필요로하는 열을 선택해야합니다. 당신이 모든 열을 필요하더라도 그것은 SQL Server가 열에 대한 쿼리 시스템 테이블 필요가 없도록 목록 열 이름에 여전히 좋습니다.
당신은 당신이 필요로하는 열을 선택해야합니다. 당신이 모든 열을 필요하더라도 그것은 SQL Server가 열에 대한 쿼리 시스템 테이블 필요가 없도록 목록 열 이름에 여전히 좋습니다.
누군가가 테이블에 열을 추가하는 경우 또한, 응용 프로그램이 중단 있습니다. 여러분의 프로그램은 너무 기대하지 않았다 열을 얻을 것이다 그리고 그것들을 처리하는 방법을 알고하지 않을 수 있습니다.
테이블이 진 열이있는 경우이 외에도에서 다음 쿼리는 훨씬 더 느려질 수 많은 네트워크 리소스를 사용합니다.
-
==============================
4.선택 * 나쁜 일이라고 4 개의 큰 이유가있다 :
선택 * 나쁜 일이라고 4 개의 큰 이유가있다 :
-
==============================
5.열 목록을 지정하면 보통 사람이 테이블에 / 삽입에게 열을 추가하는 경우 응용 프로그램이 영향을받지 않습니다 때문에 최선의 방법입니다.
열 목록을 지정하면 보통 사람이 테이블에 / 삽입에게 열을 추가하는 경우 응용 프로그램이 영향을받지 않습니다 때문에 최선의 방법입니다.
-
==============================
6.열 이름을 지정하면 빨리 확실히 - 서버에 대한. 그러나 경우
열 이름을 지정하면 빨리 확실히 - 서버에 대한. 그러나 경우
다음은 SELECT 고집 더 낫다 *. 우리의 프레임 워크에서 SELECT 많이 사용 *이 단지에서 코드를 만지면 서, 그것을 (워크 플로우 / 승인 등 버전) CMS의 모든 혜택을주는 테이블에 내용 필드를 관리하는 새로운 웹 사이트를 소개 할 수있게 해준다 포인트의 몇 대신 몇 십여 점.
날 실망 투표, 가서 - - 나는 DB 구루이 나를 미워하는거야 알고 있지만 내 세계에서, 개발 시간이 부족하고 내가 절약 따라 무엇을 내가 낭비 무엇을 조정할 수 있도록 CPU 사이클이 풍부하다.
-
==============================
7.SELECT * 쿼리가 네트워크를 통해 전송되지 않은 경우에도 나쁜 방법입니다.
SELECT * 쿼리가 네트워크를 통해 전송되지 않은 경우에도 나쁜 방법입니다.
물론,이 모든 것이 작고 간단한 시스템별로 중요하지 않습니다.
-
==============================
8.성능 현명, 특정 컬럼이있는 SELECT 빨리 (모든 데이터를 읽을 필요) 할 수 있습니다. 쿼리는 정말 모든 열을 사용하지 않으면, 여전히 선호 명시 적 매개 변수를 선택합니다. 모든 속도 차이는 기본적으로 눈에 띄지 가까운 일정 시간이 될 것입니다. 어느 날 스키마가 변경됩니다,이 때문에이에 문제를 방지하기 위해 좋은 보험입니다.
성능 현명, 특정 컬럼이있는 SELECT 빨리 (모든 데이터를 읽을 필요) 할 수 있습니다. 쿼리는 정말 모든 열을 사용하지 않으면, 여전히 선호 명시 적 매개 변수를 선택합니다. 모든 속도 차이는 기본적으로 눈에 띄지 가까운 일정 시간이 될 것입니다. 어느 날 스키마가 변경됩니다,이 때문에이에 문제를 방지하기 위해 좋은 보험입니다.
-
==============================
9.좋은 많은 이유는 지금까지, 여기에 언급되지 않은 또 하나의 여기에 대답했다.
좋은 많은 이유는 지금까지, 여기에 언급되지 않은 또 하나의 여기에 대답했다.
명시 적으로 도로 아래로 유지 보수와 함께 당신을 도울 것입니다 열을 명명. 어떤 시점에서 당신은 변화 문제 해결을, 그리고 "도대체 사용되는 열이다"묻는 자신을 발견 할 것입니다.
당신이 그 칼럼에 대한 모든 참조를 찾는 명시 적으로 나열된 이름을 가지고 있다면 - 등 모든 저장 프로 시저, 뷰를 통해 - 간단합니다. 그냥 당신의 DB 스키마에 대한 스크립트를 만들고, 그것을 통해 텍스트 검색을 덤프.
-
==============================
10.SQL 서버 그들을 끌어 열에서 조회를 할 필요가 없기 때문에 확실히, 열을 정의. 당신이 열을 정의하면, SQL은이 단계를 건너 뛸 수 있습니다.
SQL 서버 그들을 끌어 열에서 조회를 할 필요가 없기 때문에 확실히, 열을 정의. 당신이 열을 정의하면, SQL은이 단계를 건너 뛸 수 있습니다.
-
==============================
11.또한, SQL은 "*입니다 태권도 연맹"생각하는 모든 시간을 조회하지 않습니다 당신이 그것에 대해 생각한다면, 한 번 당신이 필요로하는 열을 지정하는 것이 좋습니다. 그 위에 누군가가 나중에 당신이 실제로 쿼리에 필요하지 않는 테이블에 열을 추가 할 수 있으며, 당신은 당신의 모든 열을 지정하여 더 나은 오프 경우에 수 있습니다.
또한, SQL은 "*입니다 태권도 연맹"생각하는 모든 시간을 조회하지 않습니다 당신이 그것에 대해 생각한다면, 한 번 당신이 필요로하는 열을 지정하는 것이 좋습니다. 그 위에 누군가가 나중에 당신이 실제로 쿼리에 필요하지 않는 테이블에 열을 추가 할 수 있으며, 당신은 당신의 모든 열을 지정하여 더 나은 오프 경우에 수 있습니다.
-
==============================
12."선택 *"의 문제는 당신이 정말로 필요하지 않은 데이터를 가져 오는 가능성이다. 실제 데이터베이스 쿼리 동안 선택된 열은 정말 계산에 추가되지 않습니다. 무엇 정말 "무거운 것은"당신의 클라이언트에 데이터 전송 다시, 그리고 당신이 정말로 필요 단지 네트워크 대역폭을 낭비하고 당신이 반환 방법입니다 대기를 조회하는 시간에 추가됩니다하지 않는 모든 열입니다.
"선택 *"의 문제는 당신이 정말로 필요하지 않은 데이터를 가져 오는 가능성이다. 실제 데이터베이스 쿼리 동안 선택된 열은 정말 계산에 추가되지 않습니다. 무엇 정말 "무거운 것은"당신의 클라이언트에 데이터 전송 다시, 그리고 당신이 정말로 필요 단지 네트워크 대역폭을 낭비하고 당신이 반환 방법입니다 대기를 조회하는 시간에 추가됩니다하지 않는 모든 열입니다.
당신이에서 가져온 모든 열을 사용하더라도 정당한 지금의 그 "* ... 선택". 미래에 당신이 테이블 / 뷰 레이아웃을 변경하고 더 많은 열을 추가 할 경우 당신이 그들을 필요로하지 않는 경우에도, 당신은 당신의 선택 사람들을 가지고 시작합니다.
는 "선택 *"문이 나쁜있는 또 다른 점은 뷰 생성에 있습니다. 당신이 사용하는 뷰를 작성하는 경우 "* 선택"나중에 테이블, 뷰 정의와 일치하지 않습니다 반환 된 데이터에 열을 추가하고 다시 일을 위해 당신은 순서대로 귀하의 의견을 다시 컴파일해야합니다.
정말하지 수동으로 쿼리의 모든 필드를 지정하고자 할 원인 나는 '유혹'* 선택 "는 쓰고 있음을 알고 있지만, 시스템이 진화하기 시작하면, 당신은 그것의 가치는이 여분의 시간을 보낼 것을 볼 수 있습니다 / 필드를 지정보다는 훨씬 더 많은 시간을 보내고과 노력이 귀하의 의견에 버그를 제거하거나 앱을 최적화 노력.
-
==============================
13.명시 적으로 열을 나열하면 성능 좋은 반면, 미친하지 않습니다.
명시 적으로 열을 나열하면 성능 좋은 반면, 미친하지 않습니다.
모든에게 데이터를 사용한다면, 간단하게하기 위해 SELECT * 시도 (많은 열을 가지며이 가입하고 상상 ... 쿼리가 끔찍한받을 수 있습니다). 그런 다음 - 측정합니다. 명시 적으로 나열 열 이름을 가진 쿼리와 비교.
성능에 대해 추측하지 마십시오, 그것을 측정!
당신이 (게시물 또는 문서의 몸처럼) 큰 데이터를 포함하는 몇 가지 열이 있고, 주어진 쿼리에 필요하지 않은 경우 명시 목록은 가장 도움이됩니다. 그런 다음 시간, 대역폭 및 디스크 처리량을 절약 할 수 있습니다 당신의 대답 DB 서버에 반환하지 않음으로써. 귀하의 질의 결과는 어떤 쿼리 캐시에 대한 좋은 인 작아집니다.
-
==============================
14.당신은 정말 당신이 필요로하는 필드 만, 단지 필요한 숫자, 즉를 선택해야한다
당신은 정말 당신이 필요로하는 필드 만, 단지 필요한 숫자, 즉를 선택해야한다
SELECT Field1, Field2 FROM SomeTable WHERE --(constraints)
데이터베이스의 외부는 동적 쿼리 인젝션 공격과 잘못된 데이터의 위험을 실행합니다. 일반적으로 당신은 저장 프로 시저 또는 매개 변수화 쿼리를 사용하여이 피해 갈 수. 또한 서버가 실행 계획을 동적 쿼리가 실행될 때마다 생성 할 수있다 (정말 많은 문제가 있다고하지만).
-
==============================
15.당신이 * 또는 열을 사용하는 경우 선택 (속도면에서) 똑같이 효율적이다.
당신이 * 또는 열을 사용하는 경우 선택 (속도면에서) 똑같이 효율적이다.
차이점은 메모리가 아닌 속도에 관한 것입니다. 여러 열을 선택하면 SQL Server는 단지 그들 중 하나를 사용하는 경우에도 요청하신 것을 모든 열에 대한 모든 데이터를 포함, 당신에게 쿼리를 제공하기 위해 메모리 공간을 할당해야합니다.
어떤 성능면에서 문제가하는 일은 차례로 절과의 수는 가입 WHERE, 외부 조인 귀하에 크게 의존하는 실행 계획 등입니다 ...
귀하의 질문에 그냥 SELECT *를 사용합니다. 모든 열을해야하는 경우에는 성능 차이가 없습니다.
-
==============================
16.그것은 단지, 당신은 모든 필드에 대한 데이터를 얻을 필요가있는 경우, * 대 명시 적 필드 이름을 사용하는 것이 빠른 아닙니다.
그것은 단지, 당신은 모든 필드에 대한 데이터를 얻을 필요가있는 경우, * 대 명시 적 필드 이름을 사용하는 것이 빠른 아닙니다.
즉 너무 말도 그래서 클라이언트 소프트웨어는 반환 된 필드의 순서에 의존해서는 안된다.
그리고 (가능성하지만) 당신은 당신이 아직 필드 (매우 동적 데이터베이스 구조를 생각하는) 존재 무엇인지 모르기 때문에 *를 사용하여 모든 필드를 얻을 필요가 가능합니다.
명시 적 필드 이름을 사용하는 또 다른 단점이있다 그들 중 많은 사람들이 그들이라면 긴 다음 코드를 읽을 수 및 / 또는 쿼리가 더 어려운 기록이다.
규칙이 있어야한다 그래서 : 당신은 모든 필드를 사용 *을 필요로하는 경우, 당신은 단지 부분 집합을 필요로하는 경우, 명시 적으로 이름을 지정합니다.
-
==============================
17.결과는 너무 거대하다. 생성하고 클라이언트에 SQL 엔진에서 결과를 보내 느립니다.
결과는 너무 거대하다. 생성하고 클라이언트에 SQL 엔진에서 결과를 보내 느립니다.
클라이언트 측면, 일반적인 프로그래밍 환경 인 아닌 행의 수는 거대 할 수있는 (예를 들어, 수십 수백만 개의 행의), (예를 들어, WHERE 절, ORDER 절) 결과를 필터 설계 및 처리 할 수 없습니다.
-
==============================
18.당신이 당신의 응용 프로그램을 기대할 각 열을 명명하면 응용 프로그램이 한 당신의 열 (임의의 순서로) 여전히 존재하는 한, 누군가가 달라져 경우 테이블을 중단하지 않습니다 보장합니다.
당신이 당신의 응용 프로그램을 기대할 각 열을 명명하면 응용 프로그램이 한 당신의 열 (임의의 순서로) 여전히 존재하는 한, 누군가가 달라져 경우 테이블을 중단하지 않습니다 보장합니다.
-
==============================
19.그것은 당신의 DB 서버의 버전에 따라 다릅니다 만, SQL의 현대 버전은 계획 중 하나의 방법을 캐시 할 수 있습니다. 나는 무엇으로 이동하여 데이터 액세스 코드와 대부분의 유지 보수 말할 것입니다.
그것은 당신의 DB 서버의 버전에 따라 다릅니다 만, SQL의 현대 버전은 계획 중 하나의 방법을 캐시 할 수 있습니다. 나는 무엇으로 이동하여 데이터 액세스 코드와 대부분의 유지 보수 말할 것입니다.
-
==============================
20.한 가지 이유는 그것 때문에 테이블 구조에서 가능한 미래의 변화입니다 열을 정확하게 당신이 원하는 철자하는 것이 더 좋습니다.
한 가지 이유는 그것 때문에 테이블 구조에서 가능한 미래의 변화입니다 열을 정확하게 당신이 원하는 철자하는 것이 더 좋습니다.
수동으로 다음 추가 미래에 쿼리의 결과에 대한 데이터 구조를 채울 인덱스 기반의 접근 방식을 사용하여 데이터를 읽고 있다면 / 당신이 무엇이 잘못되었는지 알아 내려고 두통이있을 것이다 열을 제거합니다.
빠른 무엇인지에 관해서는, 나는 그들의 전문 지식에 대한 다른 사람에게 연기 할 수 있습니다.
-
==============================
21.대부분의 문제와 마찬가지로, 당신이 달성하려는 작업에 따라 달라집니다. 당신이 어떤 테이블의 모든 열을 허용하는 DB 그리드를 만들려면, 다음 "선택 *"답변입니다. 당신이 자주 이루어집니다 특정 열 쿼리에서 추가 또는 삭제 컬럼 만 필요합니다 경우, 다음 개별적으로 지정합니다.
대부분의 문제와 마찬가지로, 당신이 달성하려는 작업에 따라 달라집니다. 당신이 어떤 테이블의 모든 열을 허용하는 DB 그리드를 만들려면, 다음 "선택 *"답변입니다. 당신이 자주 이루어집니다 특정 열 쿼리에서 추가 또는 삭제 컬럼 만 필요합니다 경우, 다음 개별적으로 지정합니다.
또한 서버에서 전송하고자하는 데이터의 양에 따라 달라집니다. 열 중 하나는 등의 메모, 그래픽, BLOB로 정의되며 열, 당신은 더 나은 "* 선택"을 사용하지 않는 게 좋을 또는 데이터의 모두를 당신이 할거야 것을 필요로하지 않는 경우 원하는 성능이 저하 될 수 있습니다.
-
==============================
22.당신이 선택하는 것을 당신의 모든 열이 인덱스에 포함 된 경우 다른 사람들이 말씀하신 것을에 추가하려면, 당신의 결과 세트 대신 SQL에서 추가 데이터를 찾고의 인덱스에서 가져온 것입니다.
당신이 선택하는 것을 당신의 모든 열이 인덱스에 포함 된 경우 다른 사람들이 말씀하신 것을에 추가하려면, 당신의 결과 세트 대신 SQL에서 추가 데이터를 찾고의 인덱스에서 가져온 것입니다.
-
==============================
23.하나는 열의 수로서 메타 얻기 원한다면 SELECT *이 필요하다.
하나는 열의 수로서 메타 얻기 원한다면 SELECT *이 필요하다.
-
==============================
24.어떤 사람들은 위의 말했다 플러스 :
어떤 사람들은 위의 말했다 플러스 :
경우에 당신은 같은 일을하고, 읽을 수있는 유지 보수 코드를 위해 노력하고 있습니다 :
SELECT foo는, 위젯 FROM 바;
의도 즉시 읽을 수와 쇼입니다. 당신이 전화를 걸 경우 당신은 당신이 다시 얻고있는 것을 알고있다. 위젯은 다음 * 수단을 선택 foo는 바 열이있는 경우 위젯이 더 많은 열을 가지고 있지만에만 foo에 관심이 있다면 당신은 여전히, 순서는 그러나 등, 올바르게 매핑되었는지 확인, 다시 얻고있는 것에 대해 생각해야 와일드 카드에 대한 쿼리 만 반환 무슨의 일부를 사용할 때와 바, 다음 코드는 혼란을 가져옵니다.
-
==============================
25.당신은 내부가 정의 당신이 반복되고이 열을 조인의 데이터로 모든 열을하지 않아도 가입이있는 경우 그리고 기억.
당신은 내부가 정의 당신이 반복되고이 열을 조인의 데이터로 모든 열을하지 않아도 가입이있는 경우 그리고 기억.
그것은 하드 또는 시간을 소모하지 SQL 서버의 열을 나열하는 것과 같습니다. 당신은 단지 개체 브라우저에서 그들을 위로 마우스를 드래그 (당신은 단어 열에서 드래그하여 한 번에 모두를 얻을 수 있습니다). (이 인덱스의 사용을 줄이고 네트워크를 통해 불필요한 데이터를 전송하는 것은 비용이 많이 드는 변경할 수 없기 수를 변경할 수 없기) 및 데이터베이스 변경 등 예기치 않은 문제가있을 것이라는 점을 가능성이 그것을 만들 때때로 (시스템에 영구적 인 성능 저하를 넣으려면 열 것을 추가됩니다 당신은 짧은 시력과 비전문적 인 사용자가 단지 개발 시간의 분보다 적은 저장) 예를 들어보고 싶지 않아.
-
==============================
26.물론 당신이 모든 시간을 선택 할 열을 정의합니다. 이 이유에되지 않습니다 및 성능 향상은 물론 가치가있다.
물론 당신이 모든 시간을 선택 할 열을 정의합니다. 이 이유에되지 않습니다 및 성능 향상은 물론 가치가있다.
그들은하는 옵션이 제공되지 말았어야 "선택 *"
-
==============================
27.당신은 모든 열이 필요한 경우, 단지 SELECT *를 사용하지만 결과는 인덱스 이름으로 그들에게 접근하지 소모 될 때 순서가 잠재적으로 그렇게 변경 될 수 있음을 기억하십시오.
당신은 모든 열이 필요한 경우, 단지 SELECT *를 사용하지만 결과는 인덱스 이름으로 그들에게 접근하지 소모 될 때 순서가 잠재적으로 그렇게 변경 될 수 있음을 기억하십시오.
기회는 분석하고라는 이름의 열을 확인하는 것은하지 많은 경우 처리 시간과 같다 - 나는 목록을 가져가는 방법 * 요구 사항에 대한 의견을 무시하는 것입니다. 하지 조기에 최적화 ;-) 수행
-
==============================
28.실행 효율의 측면에서 나는 어떤 유의 한 차이를 인식하지입니다. 그러나 프로그래머의 효율성을 위해 나는 필드 때문에의 이름을 작성합니다
실행 효율의 측면에서 나는 어떤 유의 한 차이를 인식하지입니다. 그러나 프로그래머의 효율성을 위해 나는 필드 때문에의 이름을 작성합니다
-
==============================
29.헤이, 실용적. 프로토 타이핑 할 때 선택 *를 사용하여 구현하고 배포 할 때 특정 열을 선택합니다. 실행 계획의 관점에서, 모두 현대적인 시스템에서 상대적으로 동일합니다. 그러나, 특정 열을 선택하는 디스크로부터 검색되어야하는 데이터의 양을 메모리에 저장하고, 네트워크를 통해 전송을 제한한다.
헤이, 실용적. 프로토 타이핑 할 때 선택 *를 사용하여 구현하고 배포 할 때 특정 열을 선택합니다. 실행 계획의 관점에서, 모두 현대적인 시스템에서 상대적으로 동일합니다. 그러나, 특정 열을 선택하는 디스크로부터 검색되어야하는 데이터의 양을 메모리에 저장하고, 네트워크를 통해 전송을 제한한다.
궁극적으로 최선의 계획은 특정 열을 선택하는 것입니다.
-
==============================
30.또한 마음의 변화를 유지한다. 오늘, 선택은 * 단지 당신이 필요로하는 열을 선택하지만 내일도 내가 당신을 말하지 않고 추가 한 것을 그 VARBINARY (MAX) 열을 선택할 수 있습니다, 당신은 이제하지 않았다 이진 데이터의 모든 3.18 기가 바이트를 불러 오는 있습니다 테이블의 어제.
또한 마음의 변화를 유지한다. 오늘, 선택은 * 단지 당신이 필요로하는 열을 선택하지만 내일도 내가 당신을 말하지 않고 추가 한 것을 그 VARBINARY (MAX) 열을 선택할 수 있습니다, 당신은 이제하지 않았다 이진 데이터의 모든 3.18 기가 바이트를 불러 오는 있습니다 테이블의 어제.
from https://stackoverflow.com/questions/65512/which-is-faster-best-select-or-select-column1-colum2-column3-etc by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] 오라클 SQL 동적 피벗 (0) | 2020.03.08 |
---|---|
[SQL] 왜 오라클은 NULL로 빈 문자열을 취급 9I는 무엇입니까? (0) | 2020.03.08 |
[SQL] 는 SQL Server의 기능에 값을 쉼표로 가득한 VARCHAR 구분 전달 (0) | 2020.03.08 |
[SQL] 다양한 SELECT 쿼리의 결과를 반환하는 PL / pgSQL의 함수 리팩토링 (0) | 2020.03.08 |
[SQL] SQLite는 - UPSERT *하지 * INSERT 또는 REPLACE (0) | 2020.03.08 |