[1] Count(?) 성능

[2] Count(컬럼) 필터링

SELECT 
  -- 전체 개수
  COUNT(*)
 ,COUNT(1)
 ,COUNT(user_idx) -- Not Null
 
 -- 대상 컬럼의 값이 Not Null인 튜플 개수
 ,COUNT(tel_num)
 
 -- 대상 컬럼의 값이 Not Null인 튜플 개수 (중복 제거)
 ,COUNT(distinct tel_num)
 
 -- 필터링
 ,COUNT(CASE WHEN tel_num > '01090000000' THEN 1 ELSE NULL END)
 ,COUNT(*) FILTER (WHERE tel_num > '01090000000')
 
FROM users_info;

Count()의 최댓값을 제한하는 경우 최적화

-- [1]
SELECT (CASE WHEN COUNT(1) > 1000 THEN 1000 ELSE count(1) END) 
  FROM users;

-- [2]
SELECT COUNT(1) 
  FROM (SELECT 1 FROM users LIMIT 1000) a;