2012-05-09 1 views
5

가장 빠른 것 (또는 데이터베이스가 처리하기 가장 가벼운 것)어느 것이 더 빠릅니다 : "SELECT * FROM table"또는 "SELECT x, y, q FROM table"(4 개 필드가있는 테이블에서)

X, Y는, q는

어떤 방법이 가장 빠른/데이터베이스에 대한 가장 쉬운 (수행 : 만 3 필요

X, Y, Z, Q :

이의 말을하자, DB를 테이블은 4 필드가 PHP를 사용하여) .. "SELECT * FROM table"또는 "SELECT x, y, q FROM table"?

테이블에 5 개 이상의 입력란이있는 경우에도 3을 선택하면됩니다.

+0

가장 기본적인 논리를 생각해보십시오. 다른 종류의 볼을 가진 가방이 있습니다. 농구와 배구를하고 싶은 사람들이 있습니다. 바스켓 볼과 발리볼을 꺼내서 나머지를 가방에 넣어두면됩니다. 또는 전체 가방을 비우거나 바구니 공과 발리볼을 꺼내서 꺼내어 나머지를 놓아 둘 수 있습니다. 어느 것이 더 쉬울까요? – TheDeadLike

답변

10

SELECT x,y,z FROM table이 더 빠릅니다. MySQL은 쿼리를 실행하기 전에 테이블에 어떤 열이 있는지 조회 할 필요가 없기 때문입니다.

+4

그리고 그 열이 색인되어 있다면, 테이블 자체에서 읽을 필요조차 없습니다 ... – eggyal

+0

Ok. 내 머리 속에는 mysql이 특정 항목이 아닌 모든 항목을 선택하는 것이 더 쉬워 보였습니다. (그리고 mysql을 검색/정렬 할 때) – mowgli

+2

x, y, z가 있는지 확인하기 위해 열을 조회해야합니다. 해당 테이블에 유효한 열. –

3

대부분의 데이터베이스에서 *는 필드를 지정하는 것보다 느립니다.

많은 열을 모두 넣는 것도 좋은 프로그래밍 방법입니다.

+0

왜 이것이 좋은 습관입니까? – mowgli

+3

@ mowgli 몇 가지 이유로 좋은 습관입니다. 1) 쿼리의 결과에서 실제로 사용하는 데이터를 더 잘 식별합니다. 2)'*'는 모든 열의 데이터를 검색하므로 미래에 누군가가 테이블에 200 개의 추가 열을 추가하면 갑자기 자신의 작업이 귀하의 쿼리와 아무 상관이 없다고해도 ** 귀하의 ** 실적에 영향을 미칠 ** 많은 ** 데이터가 전송되는 200 배의 데이터를 처리해야합니다. 기본적으로 최소 액세스 또는 최소 권한의 원칙입니다 (http://en.wikipedia.org/wiki/Principle_of_least_privilege). –

3

SELECT x,y,q FROM table은 모든 필드를 읽지는 않지만 SELECT x,y,q,z FROM tableselect *은 동일한 효과 성능을 제공하므로 항상 항상 select *보다 빠릅니다.