게시판 시스템인데 테이블의 전체 row 수를 필요로 하는 경우가 종종 있습니다.
그래서 일단은 데이터 모델에서 count 컬럼을 두어 글이 추가될때 카운팅 해놓게 하고는 그것을 참조하긴 하는데요.
이렇게 하면 글이 쓰지거나 지워질때 카운트 올리는 부분도 꼭 있어야 하고..
그 루틴 외의 부분에서글이 추가되거나 지워지면 (이를테면 직접 db shell에서 뭔가 한다던지) 여기 반영이 안됩니다.
신경안쓰고, 제일 정확하게 하는것은 실제 count 로 값을 받아오는것일텐데요.
이것이 거의 성능에 문제가 없다면? (이를테면 DB에서 이미 pk 의 row수를 갖고 있어서 돌려준다던지) 그렇게 수정을 할려고 합니다.
아래와 같이 query plan을 보았는데 잘 볼줄을 몰라서 알수가 없네요.
따로 count 컬럼을 안 두고 그냥 매번 count(*) 혹은 count(id) 해도 될련지요?
testdb=> explain analyze
testdb-> select count(*) from forums_label;
QUERY PLAN
----------------------------------------------------------------------------------------------------------------
Aggregate (cost=12.13..12.13 rows=1 width=0) (actual time=0.070..0.071 rows=1 loops=1)
-> Seq Scan on forums_label (cost=0.00..11.70 rows=170 width=0) (actual time=0.011..0.043 rows=15 loops=1)
Total runtime: 0.124 m
|