2011-03-14 3 views
0

다양한 SQL Server 2008/coldfusion 검색 페이지를 작성하여 다양한 테이블을 검색합니다.모든 것을 보존하고 t-sql에서 필터링 된 결과를 얻으시겠습니까?

왼쪽에있는 카테고리 목록은 모든 카테고리와 함께 각 카테고리 또는 결과 유형별로 현재 검색 결과에서 발견 된 해당 유형의 총 결과 수입니다.

나는 모든 것이 훌륭하지만, 더 최적의 방법이 있기를 바라고 있습니다.

검색 할 때마다 특정 범주로 필터링하므로 모든 범주에 올바른 합계가 있는지 확인하기 위해 모든 결과를 가져와야합니다.

그리고 이것 때문에, 저는 이것이 coldfusion/sql에서 다른 많은 프로그램에서 가지고 있었던 문제라는 것을 깨달았습니다.

select의 일부 필드로 결과 수를 줄이려는 경우, 원래 레코드 수의 합계를 유지해야합니다.

그러나 실제로는 다듬어 진 결과를 얻으려면 매번 전체 쿼리를 다시 실행하고 싶지 않습니다.

이 프로그램은 cfc를 호출하기 위해 cfm 내부에 1 cfc, 1 cfm, 1 저장 프로 시저 및 jquery/ajax입니다.

cfm은 원래 양식 검색 요청을 받았을 때 cfc를 호출하고 모든 필터링이 동일한 작업을 수행합니다.

그러나 20 개 이상의 결과가있는 경우 하단에 ajax를 통해 수행하는 버튼이 20 개 더 많은 레코드를 표시합니다.

필자의 주된 목표는 성능을 향상시키는 것입니다. 필터링되지 않은 쿼리를 매번 다시 실행하지 않고도 필터링이 완료되기 전에 레코드 수가 정확히 기록되도록하십시오.

노력에 대한 여러분 모두 감사합니다

이 복잡한 문제의 일종이다, 그래서 어떤 답변이되지 않을 수도 있습니다 ... ...

답변

1
한번 "큰"쿼리를 실행할 것

, 다음 팝업 SESSION 변수에 넣습니다. 그렇다면 필터를 기반으로 하위 집합을 반환하는 Query-of-Query를 사용합니다.

메인 쿼리는 항상 존재하므로 쿼리하거나 bigQuery.recordCount과 같은 메타 데이터를 사용할 수 있습니다. QofQ는 표시에 사용할 수있는 더 작은 데이터 세트입니다. 또한 데이터베이스로 돌아 가지 않고도 필터를 다시 적용 할 수 있습니다.

+0

나는이 아이디어를 좋아합니다. 세션이 이것의 가장 좋은 범위입니까? – crosenblum

+0

다릅니다. 물론 영구 범위가 필요합니다.이 쿼리가 많이 변경되지 않고 모든 사용자에게 유효한 쿼리 인 경우 APPLICATION이 더 적합합니다. – ale

+0

cfc에서와 같이이 작업을 수행 할 수 있습니까? – crosenblum

0

글 : count(*)적어도 한 번 이상을 실행해야 총 개수를 알 수 있습니다. 당신은 할 수 :

  • 캐시이 쿼리 및 캐시 된 참조 쿼리의 recordcount 다시 다시

  • 스토어는이 사용자에 대한 실행될 때까지 세션 범위의 레코드 수

관련 문제