이 글은 기계 번역의 미러 문서이며, 원본 기사로 바로 이동하려면 여기를 클릭해 주세요.

보기: 15920|회답: 1

[출처] SQL 문에서 count(0)와 count(*)에 대한 오해

[링크 복사]
게시됨 2017. 8. 10. 오후 1:29:00 | | |
최근에는 수 함수가 많이 사용되고 있으며, 세어야 할 수가 상대적으로 클 때 count(*)는 더 많은 시간이 걸리고, count(1)는 더 적은 시간이 걸린다는 것이 밝혀졌습니다.

일부 문서에는 다음과 같은 문구가 포함되어 있습니다:

데이터 테이블에 기본 키가 없다면, count(1)가 count(*)보다 빠릅니다.  
기본 키가 있다면, 기본 키(공동 기본 키)도 count(*)보다 빠릅니다.  
테이블에 필드가 하나만 있다면 count(*)가 가장 빠른 편입니다  
count(*) count(1) 두 개를 비교해 보세요. 가장 중요한 것은 (1)에 대응하는 데이터 필드를 세는 것입니다.  
count(1)가 폴리인덱스 id라면, count(1)가 더 빠르게 작동해야 합니다. 하지만 그 차이는 매우 작다.  
count(*) 때문에 필드는 자동으로 최적화되어 있습니다. 그래서 굳이 카운트(?)를 하거나 count(*)를 사용할 필요는 없고, SQL이 최적화를 도와줍니다

  카운트 세부사항:
count(*)는 값이 null인 행을 포함해 테이블에 존재하는 모든 행의 총수를 반환합니다.하지만 count(열명)는 null을 제외한 테이블 내 모든 행의 총 수를 반환합니다(기본 값이 있는 열도 포함됩니다).
별개의 열명을 가진 경우, 결과는 null 값과 중복 데이터를 제거한 결과입니다


과거에는 블로그에서 모두가 count(0) 사용을 권장하고, 쿼리 효율이 비교적 높다는 내용이 있었던 것을 몰랐습니다

오늘날 count(0) 사용은 오해임이 밝혀졌습니다!!
count(0) 통계의 첫 번째 열이 비어 있지 않습니다

count(*) 대신 number(열명)나 count(constant)를 사용하지 마세요.

count(*)는 SQL92에서 정의한 표준 행 수의 문법으로, 데이터베이스, NULL과 non-NULL과는 무관합니다.

참고: count(*)는 NULL 값을 가진 행을 계산하지만, count(column name)은 NULL 값을 가진 행을 계산하지 않습니다.

따라서 앞으로 모든 통계를 수행하고 빈 데이터를 배제하지 않을 때는 정직하게 count(*)를 사용하는 것이 더 좋습니다!!








이전의:js에서 let과 var 정의 변수의 차이점
다음:jquery는 최대 10개의 데이터를 표시할 수 있는 테이블을 구현합니다
게시됨 2017. 8. 10. 오후 1:54:00 |
가르침                 
면책 조항:
Code Farmer Network에서 발행하는 모든 소프트웨어, 프로그래밍 자료 또는 기사는 학습 및 연구 목적으로만 사용됩니다; 위 내용은 상업적 또는 불법적인 목적으로 사용되지 않으며, 그렇지 않으면 모든 책임이 사용자에게 부담됩니다. 이 사이트의 정보는 인터넷에서 가져온 것이며, 저작권 분쟁은 이 사이트와는 관련이 없습니다. 위 내용은 다운로드 후 24시간 이내에 컴퓨터에서 완전히 삭제해야 합니다. 프로그램이 마음에 드신다면, 진짜 소프트웨어를 지원하고, 등록을 구매하며, 더 나은 진짜 서비스를 받아주세요. 침해가 있을 경우 이메일로 연락해 주시기 바랍니다.

Mail To:help@itsvse.com