저는 관계형 데이터베이스에 대한 온라인 수업을 듣고 SQL 쿼리를 연습하고 그 과정에서 몇 가지 업무 관련 문제를 해결하기 위해 Access 데이터베이스 (처음으로)를 만들었습니다. 데이터베이스는 3 개의 테이블로 구성되며, 기본 테이블은 지점/상점/메뉴 항목 레벨 (예 : 가장 낮은 수준의 세부 사항)에 회사 전체 판매 요약 정보를 기록하는 데 사용되고 데이터베이스는 현재 1.3GB 인 3 개의 데이터 기간으로 구성됩니다 하나의 테이블에 4,262,421 개의 레코드가 있습니다. 나는 다음과 같은 쿼리를 실행하려고 시도 할 때까지비효율적 인 쿼리 또는 Access의 한계에 도달 했습니까?
모든 것이 잘 갔다 :
SELECT P1.*, P13.[Price?] AS P13Price
FROM (SELECT * FROM PBASE WHERE Period = 13) AS P13, (SELECT * FROM PBASE WHERE Period = 1) AS P1
WHERE P1.Key = P13.Key and P1.[Price?]<>P13.[Price?];
는, 큰 테이블이 PriceAccData하고 내가 먼저 PriceAccData에 필드를 추가하는 쿼리 (PBASE를) 실행 설명하기를 그 한 기간에서 다음 기간으로 가격 변경을 비교하는 열쇠로 사용할 수 있습니다 (지점, 상점, 메뉴 항목의 조합). 그런 다음 하위 쿼리를 사용하여 2013 년 (기간 13)의 마지막 기간과 2014 년 (기간 1)의 첫 기간을 만들었습니다 .... 거기에서 가격이 한 기간에서 다음에 Where 절을 추가하십시오.
쿼리를 작성하거나 비교를 수행하는보다 효율적인 방법이 있습니까? 한 번에 하나의 브랜치에서 작동하지만 오랜 시간이 걸리며 둘 이상을 실행하면 Access가 잠 깁니다. 분기.
팁을 주셔서 감사합니다. Don, 그 결과는 훨씬 더 신속하게 반환되었지만 .... 지금 문제는 쿼리가 실행 된 후 결과입니다. 화면에 나는 회전하는 동안 액세스를 잠그는 몇 초마다 회전하는 파란색 원을 얻습니다. 왜 그런 일이 일어날 지 또는 어떻게 멈추는 지 알기 원하십니까? 쿼리가 완료되어 화면에 내 결과가 표시되지만이를 사용할 수없는 것은 매우 실망 스럽습니다. – Hurst2008
몇 개의 레코드가 반환됩니까? –
일반적으로 RAM (메모리)을 사용하기 때문에 필요한 행을 모두 선택하지 않습니다 (특히 너무 많은 경우). 그래서 줄이 정말로 많으면, 그것이 회전하는 파란색 원을 가져 오는 것 같습니다. 이 상황이 발생하는 동안 작업 관리자에서 Access에 대한 CPU 및 RAM 사용률을 살펴볼 수 있습니다. –