나는 Coldfusion8와 MySQL 5.0.88Coldfusion과 데이터베이스를 다시 쿼리 할 때 활성 쿼리 결과 집합을 저장하고 액세스하는 것이 좋습니다. <strong>여러보기</strong> 및 <strong>단일보기</strong> :
제품 검색은 두 개의 디스플레이 모드가 있습니다를 사용하여 제품 검색 엔진을 가지고있다.
복수은 기본 레코드 정보를 표시합니다. 은 데이터베이스에서 추가 데이터를 폴링해야합니다.
는 현재 사용자가 검색을 수행하고 난 폴링 해요
에 대한 데이터베이스 (가) 전체 기록과
(b)는 TO에 FROM 기록.
내 생각은 (쓰레기가) 얻기 위해 데이터베이스를 다시 쿼리가 기록과의 전체 수를 각 사용자의 현재 결과 집합을 저장하지 않도록했다, 그래서 사용자는 항상 자신의 현재 결과 집합에서 단일보기로 이동 (낭비 b) 이전에 쿼리 한 단일 레코드 및 단일 뷰에 필요한 세부 정보 얻기
그러나 나는 여기에 아무 것도 없습니다.
각 사용자 (세션)마다 고유하므로 현재 결과 집합 쿼리를 캐시 할 수 없습니다.
CFC 내에서 CFINVOKED 메소드 내에서 쿼리가 실행 중입니다. AJAX를 통해 호출하므로 전체 쿼리가 실행되고 이후 CFC 및 CFINVOKE 메소드가 삭제되므로 쿼리 또는 variables.cfc_storage의 쿼리를 사용할 수 없습니다. .
그래서 내 생각은 모든 새로운 검색으로 업데이트 될 세션 범위에 현재 결과 집합을 저장하고 사용자가 실행합니다 (페이지 매김 또는 완전히 새로운 검색). 저장된 최대 결과는 표시된 결과 수입니다.
내가 사용, 무사 쿼리를 저장할 수 있습니다:
<cfset Session.resultset = query_name>
이 결과 전체 쿼리를 저장하므로 같은 : 이것은 사용자가 새로운 검색을 수행 할 때마다 덮어 쓸 것
query
CACHED: false
EXECUTIONTIME: 2031
SQL: SELECT a.*, p.ek, p.vk, p.x, p.y
FROM arts a
LEFT JOIN p ON
...
LEFT JOIN f ON
...
WHERE a.aktiv = "ja"
AND
... 20 conditions ...
SQLPARAMETERS: [array]
1) ... 20+ parameters
RESULTSET:
[Record # 1]
a: true
style: 402
price: 2.3
currency: CHF
...
[Record # 2]
a: true
style: 402abc
...
. 그러나 사용자가 이러한 항목 중 하나의 세부 정보를보고 싶다면 내 임시 저장소에서 필요한 레코드에 액세스 할 수 있으면 쿼리 할 필요가 없습니다 (총 레코드 수 &). 이 방법을 사용하면 이미 실행 한 데이터를 얻기 위해 실행 시간이 각각 인 두 번의 데이터베이스 여행을 절약 할 수 있습니다.
Session.scope에서 최대 48 개 결과 (페이지 당 최대 항목 수)의 결과 집합을 갖는 모든 사용자가 적합합니다.
내 질문 :
1.이 방법이 유용할까요, 아니면 데이터베이스를 다시 쿼리해야합니까?
2. 위와 같은 struture/array/object가있는 경우 스타일 번호로 필요한 레코드를 어떻게 선택합니까? 결과 세트에 어떻게 액세스합니까? 나는 저장된 쿼리를 반복 할 수 없다 (잠시 동안 이것을 시도했다 ...).
도움 주셔서 감사합니다.
저는 Verity와 Solr을 아직 보지 못했습니다 (아직). 데이터베이스를 통해 색인을 생성했기 때문에 기쁜 일입니다. 데이터를 응용 프로그램 범위에로드하려고하는지 잘 모르겠습니다. 너무 많은 레코드. 나는 그의 세션에서 최대 24 개의 레코드를 가진 모든 사용자를 생각하고있었습니다. "evoked set". 사용자가 검색을 수행하면 24 점이 저장됩니다. 새로운 검색 또는 페이지 매김은 24 점을 대체합니다. 세부 정보를 조회하면 24 점의 x가 사용되어 세부 정보보기를로드합니다. 이 구문을 사용하여 시도해 보겠습니다. 지금까지 고마워! – frequent