2015-01-07 7 views
0

관계형 대수학과 관련하여 나에게 쿼리 최적화 개념을 설명 할 수있는 훌륭한 사람들이 누구입니까?관계형 대수 쿼리에 필요한 디스크 액세스 수를 어떻게 알 수 있습니까?

내 선호하는 관계형 대수 쿼리를 만드는 방법은 임시 값을 단계별로 사용하는 것입니다. 그러나 쿼리 최적화를 통해 필요한 디스크 액세스 양을 찾는 방법을 설명하는 유일한 리소스는 관계형 대수 쿼리에 다른 표기법을 사용합니다. 그것은 나를 혼란스럽게합니다.

그렇다면 나는 나는 다음과 같은 관계를 주어진 :

부서 (DEPTNO, DEPTNAME, 위치)

직원 (EMPNO, empName, empAddress, jobDesc, DEPTNO *)

맨체스터 부서에서 일하는 모든 프로그래머를 찾기 위해 다음 관계형 대수 쿼리를 생성했습니다.

te MP1 = 부서 직원

임시 2 = SELECT (jobdesc = '프로그래머) (TEMP1)

결과 = SELECT (위치 ='맨체스터) (임시 2)

그리고 난 것으로 가정 할 수 가입이 직원 관계에 10,00 개의 튜플, 부서 관계에 50 개의 튜플, 100 명의 프로그래머 (각 부서에 2 개) 및 맨체스터에있는 1 개의 부서가 있습니다. 얼마나 많은 디스크 액세스가 필요한지 어떻게 알 수 있습니까?

미리 감사드립니다.

+0

나는 데이터베이스 (Postgres, MySQL, SQL Server, Oracle 또는 비슷한 것)를 선택해야한다고 생각한다. SQL을 배우십시오. 데이터베이스가 어떻게 최적화하는지 알아보십시오. 디스크 액세스의 양은 쿼리, 소프트웨어, 하드웨어, 소프트웨어 버전, 구성 매개 변수 및 데이터의 특성과 같은 여러 요소에 따라 달라집니다. 그리고, 나는 의심의 여지가 더 물건을 남겼습니다. –

답변

0

넵 - 고든의 권리. 그러나 이것은 학문적 인 연습입니다. 즉, 데이터 집합을 구성하는 것입니다. 하위 쿼리가 반환하는 각 요소/튜플이 하나의 디스크 액세스라고 가정합니다. 일반적인 경험 법칙 - 최대한 많은 양의 데이터를 가능한 한 빨리 제한하십시오. JOIN을 먼저 가정합니다 (10000 명의 직원 + 50 개 부서 = 10050 디스크 항목 {반환 된 행 수가 10000이라고 생각했습니다.}), SELECT를 수행합니다 (하위 쿼리가 완벽하게 인덱싱되었다고 가정) = (100 프로그래머 + 맨체스터에서 1 부서) 총 액세스 수 = 10050 + 101 = 10151.

선택 사항을 먼저 수행하면 전체 연습이 크게 변경됩니다. (임시 1 = 프로그래머가 100 개/디스크 가져 오기 임시 뷰/쿼리 등에서 완벽한 인덱싱을 가정하면 JOIN = 50 행 : 따라서 총 액세스 수 = 100 + 1 + 50 = 151.

동일한 결과가 있지만 해석되고 실행되는 방식은 데이터베이스 엔진의 작업량에 영향을 미칠 수 있습니다. 엠.

나는 이것이 잘못되었을 수도있는 모든 가능성이 있습니다. 나는 고쳐 주시길 바랍니다.