count(*)과 count(1)의 차이점은 무엇인가요? 0 8 21,076

by 손님 [2010.10.14 17:34:41]


사실 검색하니까 이와 같은 질문이 있어서 읽어보았습니다

같다고는 이해하였지만

회사에서 사용하고 있는 쿼리 중에 count(*) 와 count(1) 이 섞여있는것을 보고 다시한번 묻게 되었습니다

(하나의 쿼리에서는 섞여 있지 않았으나 각각의 독립적인 select문에서 count(*) 와 count(1)이 있었습니다)

개개인의 쿼리 작성 스타일인지, 아니면 각각의 count문이 사용되는 이유가 있는건지 궁급합니다
by 꼬랑지 [2010.10.14 18:35:32]
차이가 없죠. 혹 테이블에 엄청나게 많은 칼럼이 있는 경우 성능차이가 있는지 모르겠지만 지금까지 사용한 바에 의하면 차이가 없습니다. 단, COUNT 함수에 칼럼명을 기재할 때는 칼럼 값의 NULL 여부에 따라 COUNT(*)와 차이가 있습니다.

by 손님 [2010.10.14 19:06:39]
아.. 역시 그렇군요
단순히 개인의 스타일이라고 이해하면 되겠네요 ㅎㅎ

감사합니다!

by 병아리 [2010.10.15 13:10:10]
* 로 하는게 속도상 가장 빠르다고 알고 있습니다.

by 마농 [2010.10.18 00:30:04]
결과가 같다고 해서 그 의미까지 같은것은 아닙니다.
COUNT(*)는 결과행의 수를 셉니다.
COUNT(컬럼명)은 컬럼값의의 수를 셉니다.
- 널포함 컬럼의 경우 널이 아닌 값의 수만 셉니다.
- 낫널 컬럼의 경우 결과는 Count(*)와 같습니다.
COUNT(1)은 1의 수를 셉니다.
COUNT(0)은 0의 수를 셉니다.
COUNT('a')은 'a'의 수를 셉니다.
개인적인 코딩 스타일이라고 생각됩니다.

by 박군 [2010.12.20 03:07:45]
이건 질문과 약간 다른 얘기인데, 덧글 보고 덧글 씁니다.
COUNT(칼럼명), COUNT(*)는 속도 차이가 당근 있습니다.
양이 많은 때는 어떤지 몰라도? 라는 표현이 적절하지 않습니다.
양이 적을 때는 속도 차이가 없지만 DB는 써서 만든 시스템을 평생 소규모 데이타
처리만 하는 것이 아니라면 대부분 양을 많을 때 고려하거나 개념을 정확히
알고 쓰셔야 합니다. 답은 말하지 않겠습니다.
그리고 질문에 관계 된 답으로
COUNT(*)나 COUNT(색인필드명)으로 하세요.
COUNT(1), COUNT(100), COUNT(999) 식의 기술 방법은
COUNT(*) 대체용이 아닙니다. COUNT(*)를 COUNT(9)식으로 써도 같은 결과라
생각하고 COUNT(숫자)를 쓰시면 안됩니다. 평생 같은결과라 할지라도
질의어 분별력이 떨어집니다.

by JHJ [2010.12.20 08:49:20]
그래서 답이 뭔가요? COUNT(*)가 낳다는거죠?

by 박진영 [2011.07.11 12:20:23]
count(*) , count(1)을 토드로 돌려봤을때

거의 성능 차이를 느끼지 못합니다...사람의 기호인거 같습니다

by 공기 [2024.03.14 14:05:13]

저도 궁금했었는데..

전에  엔코아? 비투엔?  그쪽분들이  차이가 없다고 한글을 본기억이 있습니다.

(근데 보기만으로는 count(1)이 너 빠를거 같인 보이긴하네요..ㅎㅎ 그래서들 쓰는거겠죠..잘모르고 쓰는 사람들이 태반이죠..)

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입