PostgreSQL에서 대형 테이블 계산하기

1030 단어 postgrestodayilearned
네가 아주 큰 탁자를 가지고 있다고 상상해 봐라. (> 100만 줄)어떻게 합리적인 시간 내에 이 표에 몇 줄이 있는지 계산해 냅니까?
만약 SELECT COUNT(id) FROM my_large_table 을 실행하려고 시도한다면, 데이터베이스는 모든 줄을 스캔하고 던져서 그것들을 계산해야 하기 때문에 많은 시간을 들일 것이다.
$ heroku pg:ps
 pid | state | source | running_for | transaction_start | waiting | query
------+--------+------------------+-----------------+-------------------------------+---------+--------------------------------------------------
 6926 | active | psql interactive | 00:10:12.549096 | 2020-10-01 08:22:18.090989+00 | t | SELECT COUNT(id) FROM pageviews;
(1 row)
나는 10분을 기다렸다가 포기했다...
더 빠른 방법은 디렉터리표pg_catalog.pg_class의 통계 정보를 보면서 근사치를 얻는 것이다.
DATABASE=> SELECT reltuples::bigint FROM pg_catalog.pg_class WHERE relname = 'pageviews';
 reltuples
-----------
 136032896
(1 row)
조회가 완료되는 9분을 기다리는 것보다 1밀리초도 걸리지 않는다.그것은 그다지 정확하지는 않을 수도 있지만, 시계에 새로운 인덱스를 추가하거나 대형 조작을 수행할 것으로 예상되는 만큼 충분히 유용하다.

좋은 웹페이지 즐겨찾기