2010-08-05 5 views
0

나는 자동차 무역 웹 사이트에서 일하고있다. 광고 목록이 표시되는 페이지에서 다른 카테고리의 광고 수를 표시 할 계획입니다. 예를 들어, 위치 : "Vancouver (50), Richmond (12), Surrey (20)"와 같은 것을 표시합니다. 차량 제조사의 경우 다음과 같이 표시됩니다 : "Honda (20), Ford (12), VW (24)".db에서 모든 것을 꺼내서 통계를 계산 하시겠습니까?

DB에서 모든 광고를 먼저 List로 가져와 결과의 한 페이지를 Gridview 컨트롤에 바인딩 한 다음 Linq를 사용하여 각 카테고리에 대한 통계를 계산해야하는지 잘 모르겠습니다. 물론 어떤 종류의 조건을 사용하여 DB에서 꺼내 진 행 수를 제한 할 것입니다. MAX의 행 수를 500으로 설정할 수 있습니다.

내 주요 관심사는 메모리 hog일까요?

답변

2

메모리의 행 수를 계산하는 것은 좋지 않습니다.

SELECT COUNT() FROM... [ GROUP BY ] 

을 사용하는 것이 훨씬 더 효율적입니다.

또한이 값을 캐시 할 수 있습니다. 여러 사람이 동시에 페이지를로드한다고 가정하지만 1 분당 1 회 빠르게 자동차 수가 변경되지 않습니다. 캐싱 전략을 1 분에 걸쳐 오래된 값에 적용하십시오.

+0

OP를 사용하는 언어를 고려하면 의사 코드보다는 완전한 SQL 쿼리를 제공해야한다고 생각합니다. – slebetman

+0

여러 그룹 (위치, 확인 등)에서 COUNT를해야하는 경우 여러 개의 SELECT가 문제가되지 않습니다. 대부분 성과에 관심이 있습니다. 귀하의 답변 주셔서 감사합니다! – sean717

+0

@ sean717 - 우리는 비슷한 문제에 대한 측정을하고 실제로 여러 쿼리를 실행합니다 (Location, Make in case). 클라이언트 측에 모든 레코드를 추출하는 것보다 훨씬 효율적입니다. 그리고 이러한 결과를 캐시하는 것을 잊지 마십시오. – Dewfy

관련 문제