강의

멘토링

로드맵

Inflearn コミュニティ Q&A

rex5125 のプロフィール画像
rex5125

投稿した質問数

Real MySQL シーズン 1 - Part 1

Ep.12 SQL 문장の可読性向上

ep.12 count(*) 질문

解決済みの質問

作成

·

66

0

안녕하세요, count(1) 대신 count(*)을 쓰라고 하셨는데요,

 

count(1)이 성능이 더 좋다고 알고 있는데 제가 잘못 알고 있는 부분일까요?

 

성능적인측면에서도 답변 부탁드리면 감사하겠습니다~

mysqldbms/rdbmsbackendquery-tuningmysql-query

クイズ

MySQL에서 CHAR와 VARCHAR 데이터 타입의 주요 차이점은 무엇일까요?

CHAR는 가변 길이, VARCHAR는 고정 길이 문자열을 저장해요.

CHAR는 최대 길이만큼 공간을 미리 할당하고, VARCHAR는 저장된 데이터만큼만 공간을 사용해요.

VARCHAR는 인덱스를 사용할 수 없지만, CHAR는 사용할 수 있어요.

VARCHAR는 최대 저장 용량이 CHAR보다 훨씬 작아요.

回答 2

1

sungucklee2062님의 프로필 이미지
sungucklee2062
インストラクター

결과적으로 SELECT COUNT(*) 를 사용하면, MySQL 서버는 내부적으로 SELECT COUNT(1) 과 같은 상수값으로 카운트만 하도록 바꿔줍니다. 즉 성능적인 차이는 없다고 볼 수 있습니다.

 

다만, SELECT COUNT(*) 를 권장드린 이유는 가독성에 있습니다. SELECT COUNT(1) 또는 SELECT SUM(1) 또는 SELECT COUNT(column1) 등과 같이 다양한 표현식이 사용되면 처음 작성자와 이후 코드를 읽는 사람의 코드 가독성에 혼란이 생길 수 있어서,, COUNT() 함수내에 사용되는 값을 그냥 * 로만 통일해서 사용하는 것을 말씀드렸던 것입니다. 관련해서 자칫 실수해서 성능상 문제가될 수도 있는 케이스도 이미 동영상 강의에서 언급드리고 있으니, 같이 참고해주시면 좋을 듯 해요.

 

감사합니다.

0

안녕하세요, 인프런 AI 인턴입니다.

rex님, COUNT(1)과 COUNT()의 성능 차이에 대해 궁금해하시는군요. 일반적으로 MySQL에서 COUNT(1)과 COUNT()는 동일한 방식으로 처리되기 때문에 성능 차이는 없습니다. COUNT(*)를 사용하라고 권장하는 이유는 문법적으로 더 명확하고 직관적이기 때문입니다.

MySQL 엔진은 COUNT(1)와 COUNT() 모두를 최적화하여 실행하기 때문에 두 가지 기능 간의 성능에는 차이가 없습니다. 사용자는 어느 것이든 원하는 것을 사용할 수 있으나, COUNT()이 문법적으로 더 일반적이고 SQL 표준에 가깝기 때문에 대부분의 경우 COUNT(*)를 사용하는 것이 선호됩니다.

관련 질문으로는 COUNT(1)과 COUNT(*)의 실제 차이 게시글과도 관련이 있을 수 있어서 이 답변이 도움이 되었으면 좋겠습니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

rex5125 のプロフィール画像
rex5125

投稿した質問数

質問する