그것은 ODBC 데이터 소스 테이블 통계 및 메타 데이터의 특정 유형의 제트 관련가는 것을 깨닫게하는 것이 중요합니다. 일반적으로, 나는 인덱스가 SQL 문장으로 무엇을 할 것인가를 결정하는 Jet의 관점에서 정말로 중요한 부분이라고 생각한다 - 인덱스가 있고 다른 끝에있는 서버를 이해한다면 그것은 모든 것을 전달할 것이다. 서버 데이터베이스가 이해할 수없는 표현식을 어리석게 선택하거나 정렬하지 않으면 처리 할 서버를 지정해야합니다. 이 경우 Jet는 서버에서 처리 할 수있는 SQL 문의 부분 (예 : 조인 및 리터럴에 대한 조건)을 보내고 표현식과 함께 반환 된 결과 집합을 사용할 정도로 똑똑 할 수 있습니다.
링크 된 테이블에 관한 질문과 관련하여 불행히도 ODBC 연결된 테이블을 동적으로 업데이트 할 수있는 방법이 없습니다. 예를 들어, 테이블이나 뷰에 열을 추가하면 반환 된 테이블에 해당 테이블이 없습니다. , 링크를 새로 고치면 새 열이 나타나지만 읽기 전용 일 수 있습니다.
서버의 테이블 구조 및보기를 변경할 때 수행해야 할 유일한 작업은 관련 연결된 테이블을 간단히 삭제하고 다시 만드는 것입니다. 이렇게하기위한 프로그래밍 방식이 있다는 것을 나는 모른다. 구조가 마지막으로 업데이트 된 시점을 알려주는 테이블/뷰에 대한 메타 데이터가있는 경우 링크 된 테이블의 날짜와 비교하여 체크하고 링크가 끝난 후 백엔드가 업데이트되면 삭제하고 다시 만들 수 있습니다. 그냥 여기서 추측하고있어. 그러나 그것은 백엔드와 관련된 것이다. 각 SQL 문 다음 실행시, 컴파일
제트에 접근 할 수있는, 컴팩트 한 테이블 통계를 다시 설정해야하고, :
완성도를 위해서
, 난 그냥 제트 백 엔드에 기초를 줄 것이다 각 문은 삭제되고 쿼리 계획은 새 통계를 기반으로 다시 계산됩니다. 백 엔드를 압축하는 테이블 통계를 업데이트 할 목적으로 프런트 엔드를 압축하는 경우 중요합니다. 전에 프런트 엔드를 압축하십시오. 백 엔드 테이블 통계가 가능한 한 정확하기 때문에 대부분은 컴팩트하지 않고도 최신 상태를 유지합니다.)
Jet은 쿼리 실행? 이러한 정보는 어디에 저장됩니까? 읽기 전용 모드로 mdb를 열면 (힌트 : ODBC로 연결된 테이블의 데이터는 쓰기 가능합니다.) mdb가 커지지 않습니다. – Ice
Jet는 쿼리를 실행하는 동안 메타 데이터를 저장하고 .mdb 파일에 저장합니다. Jet는 ODBC 연결보다 로컬 테이블에 대한 완전한 정보를 컴파일 할 수 있습니다. JET가 쿼리 컴파일을 원격 데이터베이스에 넘기로 결정하면 최적화 정보가 거의 생성되지 않을 수 있습니다. – heferav