이 웹 포럼은 일반적으로 일주일에 한 번씩 제거됩니다. 그래서 나는 그것을 스크랩하여 내 데이터베이스 (PostgreSQL)에 저장합니다.두 열에 COUNT 및 GROUP BY가있는 매우 느린 SQL 쿼리
사용자가 즐길 수있는 그래프와 가장 활발한 포럼 시간 등 데이터에 대한 분석도 수행합니다.
Column | Type
------------+------------------------------
id | integer
body | text
created_at | timestamp without time zone
topic_id | integer
user_name | text
user_id | integer
을 그리고 지금은 내 작은 10 포스터 테이블에 대해, 각 사용자의 게시물 개수를 갖고 싶어 :
그래서 난 그렇게처럼 게시물 테이블이있다.
나는이 함께했다 : 밝혀SELECT user_id, user_name, count(*)
FROM posts
GROUP BY user_id, user_name
ORDER BY count DESC LIMIT 10
은 매우 느린. 9 초, 현재 게시물 테이블에 약 300 000 개의 행이 있습니다.
단 하나의 열에 그룹화하면 30 분 밖에 걸리지 않지만 둘 다 필요합니다.
저는 관계형 데이터베이스와 SQL에 익숙하지 않습니다. 그렇다면이게 옳은 것인지 확실하지 않거나 잘못하고있는 것일 수 있습니다.
+1 넵를 반환 가진 사용할 수 있습니다, 그게 할 수있는 방법입니다 :). 1999 년 이후의 sql 스펙에서는 'GROUP BY'목록에도 나타나지 않는 집계되지 않은 열을'SELECT' 목록에 나열 할 수 있습니다. 단, 해당 열이 기능적으로'GROUP BY '목록. 뻔뻔한 플러그 : http://rpbouman.blogspot.com/2007/05/debunking-group-by-myths.html –