ep.12 count(*) 질문
안녕하세요, count(1) 대신 count(*)을 쓰라고 하셨는데요,
count(1)이 성능이 더 좋다고 알고 있는데 제가 잘못 알고 있는 부분일까요?
성능적인측면에서도 답변 부탁드리면 감사하겠습니다~
Câu trả lời 2
1
결과적으로 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(*)의 실제 차이 게시글과도 관련이 있을 수 있어서 이 답변이 도움이 되었으면 좋겠습니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
Commit 응답받기 전 네트워크 문제가 발생하면
1
64
1
14분44초에 쿼리 질문드립니다.
0
72
2
ep12. (2) LEFT JOIN 사용 방법 준수 - 오타 질문
0
75
2
레코드 수정시 저장공간이 부족하면
0
81
2
복합 index 문의
0
87
2
강의
0
82
1
LEFT JOIN 시 드라이빙 테이블을 왜 ALL로 읽나요?
0
107
2
GAP 락에 대한 질문 드립니닷..!
0
194
1
ORDER BY가 필요한 이유
0
177
2
[오타 제보] 선행 데이터를 기반으로 한 데이터 분석
0
165
1
2강. VARCHAR(255) 저장되는 데이터의 길이 정보 질문
0
448
2
LIMIT, OFFSET을 사용하는 것과 범위 기반 방식의 성능 차이
0
319
2
MySQL Where절 내 조건의 순서
0
393
2
1강. delete marking된 데이터의 정리 주기는 어느 정도인가요?
0
238
2
Mysql table avg_row_length
0
144
1
12강 FULL GROUP BY
0
135
2
ep11) Prepared Statement에서 질문
0
145
2
7)select for update 강의에서 질문
0
229
2
12강. LEFT JOIN 사용 방법 준수 5:42
0
240
2
6강. Top N 데이터 조회와 관련해 질문있습니다.
0
195
2
5강에서 사례로 언급하신 DETERMINISTIC 예제에 대해 질문있습니다.
0
145
1
deternmistic 질문
0
174
2
1강 CHAR타입에 대해 질문드립니다
0
230
1
EXPLAIN ANALYZE 수행 시 쿼리 실행 계획이 예상과 다릅니다.
0
251
1

