인라인뷰 예제

팩터링된 하위 쿼리를 항상 사용하지 않으려는 유일한 이유는 특정 DML 문에서는 인라인 보기만 허용되기 때문입니다. 팩터링된 하위 쿼리는 읽기 및 디버깅이 더 쉬우며 손을 아래로 두면 성능도 우수할 수 있습니다. 따라서 설득력있는 이유가 없다면, 예를 들어 구문 제한이나 성능이 있지만 후자는 거의 그렇지 않지만 인라인 뷰에서 벗어나 팩터링 된 하위 쿼리로 영광을 누리십시오. 동일한 SQL 문에서 여러 번 액세스해야 하는 재귀 하위 쿼리 및 하위 쿼리의 경우 팩터링된 하위 쿼리가 거의 유일한 옵션입니다. 오라클 최적화 프로그램은 CTE의 결과를 내부 임시 테이블로 구체화하도록 선택할 수 있습니다. 비용 기반 최적화 대신 추론을 사용하여 이 작업을 수행합니다. 추론은 “CTE가 사소한 표현식이 아니고 CTE가 쿼리에서 두 번 이상 참조되는 경우 CTE를 구체화”와 같습니다. 구체화가 성능을 향상시키는 몇 가지 쿼리가 있습니다. 구체화가 성능을 크게 저하시키는 몇 가지 쿼리가 있습니다.

다음 예제는 약간 모순되어 있지만 요점을 잘 보여 줍니다. 쿼리 2와 쿼리 3을 비교하면 유일한 차이점은 쿼리 2의 임시 테이블 이름을 쿼리 3의 인라인 뷰 문으로 바꿉니다. 다른 모든 것은 동일하게 유지됩니다. 질문: 오라클 “인라인 뷰란 무엇입니까? 인라인 뷰를 사용하려면 어떻게 해야 합니까? 흥미롭게도 재귀 팩터링 하위 쿼리는 특히 계층적 쿼리의 경우 기존 솔루션보다 더 나은 성능을 발휘할 수 있습니다. 자세한 예는 계층 구조의 분기에 걸쳐 곱셈에 대한 데이터베이스 라인의 Ian Hellström에 의해 제공되며, 재귀 요인 하위 쿼리가있는 접근 방식은 CONNECT BY를 사용하여 표준 Oracle 솔루션을 능가하는 것으로 나타났습니다. 크기. 오라클의 인라인 뷰(파생 테이블)와 WITH 절(CTE) 사이에는 몇 가지 중요한 차이점이 있습니다. 그들 중 일부는 매우 보편적이다, 즉, 다른 RDBMS에 적용 할 수 있습니다. 그러나 이것은 하위 쿼리 또는 상호 연관된 하위 쿼리가 아닙니다. CTE에서 참조하는 테이블을 업데이트하는 것과 같이 SQL Server의 하위 쿼리로는 수행할 수 없는 작업을 CTE로 수행할 수 있습니다.

다음은 CTE로 테이블을 업데이트하는 예제입니다. 이 예에서 먼저 인라인 보기는 내림차순으로 정가별로 정렬된 모든 제품을 반환합니다.

Posted in Uncategorised