복붙노트

[SQL] 더 정확 - 카운트 (열 이름) 대 (*) 계산? [복제]

SQL

더 정확 - 카운트 (열 이름) 대 (*) 계산? [복제]

이 두 가지 예에서와 같이 수 (열 이름) 대 COUNT (*)를 할 경우이 차이를 만들 수 있습니까?

그 의미가 있다면, 그것은 집계 함수 인의 개념과 더 나은 내 마음에 맞는 것 때문에 난 항상 쓰기 COUNT (*)하는 경향이있다.

하지만 확실히 내가하지보다 더 자주 *없이 작성 예제 코드를 참조하는 경향이 기술적으로 최선의 경우 아니에요.

카운트(*):

select customerid, count(*), sum(price) 
from items_ordered
group by customerid
having count(*) > 1;

비교 횟수 (컬럼 명) :

SELECT customerid, count(customerid), sum(price)
FROM items_ordered
GROUP BY customerid
HAVING count(customerid) > 1;

해결법

  1. ==============================

    1.COUNT (*) 또는 COUNT (열)의 사용은 원하는 출력 만에 근거한다.

    COUNT (*) 또는 COUNT (열)의 사용은 원하는 출력 만에 근거한다.

  2. ==============================

    2.이것은 MySQL로 적용됩니다. 나는 다른 사람에 대해 확실하지 않다.

    이것은 MySQL로 적용됩니다. 나는 다른 사람에 대해 확실하지 않다.

    차이점은 :

    따라서 (*) COUNT 것은 당신이 무엇을 사용해야합니다. 당신의 MyISAM을 사용하지 않고이 경우 WHERE 절, 다음 옵티마이는 짝수 행의 수는 이미 캐시되어 있기 때문에, 테이블 볼 필요가 없습니다.

  3. ==============================

    3.이 식별자의 경우 그때는 아마 중요하지 않습니다 (비 NULL을 보장).

    이 식별자의 경우 그때는 아마 중요하지 않습니다 (비 NULL을 보장).

    그러나, 열에 비 NULL 값의 카운트가 반환 COUNT (열)에서의 COUNT (*) 및 일반 COUNT (열)의 차이가있다. 고유 비 - NULL 값의 수를 반환 COUNT (DISTINCT 열) 변형도 있습니다.

  4. ==============================

    4.일반적으로는 동일하지만 세부 AFAIK "COUNT (*)"더 나은 B / C "수 (기둥 이름)"입니다 힘 DB는 열 이름 (하지만 필요하지만)를 참조하기위한 좀 더 많은 코드를 실행합니다.

    일반적으로는 동일하지만 세부 AFAIK "COUNT (*)"더 나은 B / C "수 (기둥 이름)"입니다 힘 DB는 열 이름 (하지만 필요하지만)를 참조하기위한 좀 더 많은 코드를 실행합니다.

  5. ==============================

    5.예, 성능 가능한 차이가있다. 쿼리 및 해당 테이블의 인덱스에 따라, 대신 데이터를 테이블에가는 인덱스의 수를 얻기 위해 더 빨리 할 수 ​​있습니다. 따라서 당신은 아마 대신 *를 사용하는 필드 이름을 지정해야합니다.

    예, 성능 가능한 차이가있다. 쿼리 및 해당 테이블의 인덱스에 따라, 대신 데이터를 테이블에가는 인덱스의 수를 얻기 위해 더 빨리 할 수 ​​있습니다. 따라서 당신은 아마 대신 *를 사용하는 필드 이름을 지정해야합니다.

  6. from https://stackoverflow.com/questions/3003457/count-vs-countcolumn-name-which-is-more-correct by cc-by-sa and MIT license