2009-07-17 8 views

답변

2

인라인보기는 쿼리가 테이블 이름 인 것처럼 SQL FROM 절에 쿼리를 배치 할 수있는 Oracle SQL의 구문입니다.

인라인 뷰는

  1. 바인드 변수는 다른 많은있다
+0

바인드 변수는 u는 그것에 대한 예를 제공 할 수있는 data-- 을 제한하기 위해 문 내부에 도입 될 수 ... – hrishi

+0

확인이 링크 http://www.akadia.com/services/ora_bind_variables.html – rahul

4

코드에

  • 더 나은 제어 튜닝을 통해
  • 가시성 데이터를 제한하기 위해 문 내부에 도입 될 수 제공 인라인보기를 사용하는 이유. 몇 가지 예를 들어, 인라인 뷰없이 할 수 없습니다

    1) 필터를 분석 함수의 결과에 :

    select ename, ROWNUM from 
    (select ename 
        from emp 
        order by ename 
    ); 
    
    : 주문 결과에 ROWNUM을 사용하여

    select ename from 
    (select ename, rank() over (order by sal desc) rnk 
        from emp 
    ) 
    where rnk < 4; 
    

    2)

    다른 경우에는 작성하려는 SQL을 더 쉽게 작성할 수 있습니다.

  • +0

    1을 반복하면 다음과 같습니다. http://asktom.oracle.com/pls/asktom/f?p=100:11:0:::P11_QUESTION_ID:995030557145 포인트 2를 명확히하기 위해 페이지 매김이라고 종종 말합니다. – David

    1

    N 개의 맨 위 정렬 행을 가져 오려면.

    SELECT name, salary, 
    FROM (SELECT name, salary 
         FROM emp 
         ORDER BY salary DESC) 
    WHERE rownum <= 10; 
    
    1

    인라인보기는 어떤 방식 으로든 필요한 데이터 세트에 기여하는 중간 결과 집합으로 간주 할 수 있습니다. 때로는 코드의 유지 보수 가능성을 향상시키는 데 전적으로 문제가되며 때로는 논리적으로 필요한 경우도 있습니다.

    0

    인라인 뷰를 사용하여 쿼리를 논리적 인 부분으로 분리하면 가독성을 높이고 더 복잡한 쿼리를 좀 더 쉽게 작성할 수 있습니다.

    Jva와 Tony Andrews는 Top-N 또는 Pagination 쿼리와 같은 유용한 간단한 예제를 제공했습니다. 여기서는 쿼리를 수행하고 그 결과를 순서 지정하여 큰 쿼리의 일부로 사용할 수 있습니다. 이러한 개별 쿼리에 대한 논리가 단일 쿼리에서 달성하기 어려울 수있는 다른 처리를 수행하는 쿼리를 제공 할 수 있습니다.

    여러 가지 테이블을 함께 결합하는 쿼리를 작성하고 일부 테이블에서 집계를 수행하고 그룹 기능을 분리하고 조인을 수행하기 전에 다른 인라인 뷰로 처리하려는 경우 카디널리티가 훨씬 쉽습니다. 몇 가지 예를 원하면 더 명확하게 제공 할 수있어 기쁩니다.

    하위 쿼리 (쿼리의 시작 부분에 WITH 절에 쿼리를 나열 함)와 인라인 뷰는 종종 성능상의 이점도 가져옵니다. 하위 쿼리의 결과에 여러 번 액세스해야하는 경우 한 번 실행하면 전역 임시 테이블로 구체화 할 수 있습니다 (옵티마이 저가 작동하는 방식은 완전히 흑백이 아니므로 그 중 일부는 수행하지 않겠습니다) 여기하지만 당신은 당신의 자신의 연구를 할 수 있습니다 - Oracle Database Concepts 문서에서)

    1

    을, 예를 들어 http://jonathanlewis.wordpress.com/2007/07/26/subquery-factoring-2/를 참조 inline view concept definition이 있습니다

    인라인 뷰가 스키마 개체가 아닙니다. (상관 이름)이라는 별칭을 가진 하위 쿼리로, 을 SQL 문 내에서보기와 같이 사용할 수 있습니다.

    서브 쿼리 정보는 Oracle SQL Reference 설명서에서 Using Subqueries을 참조하십시오. 그것은 아주 좋은 교육학 정보를 가지고 있습니다.

    어쨌든 오늘은 인라인보기를 사용하는보다 강력한 방법 인 Subquery Factoring Clause을 사용하는 것이 좋습니다.

    • 인라인 뷰 쿼리 : SELECT SUM...
    • A는 상관 서브 쿼리 : SELECT avg FROM...
    • WITH 
          dept_costs AS (
           SELECT department_name, SUM(salary) dept_total 
           FROM employees e, departments d 
           WHERE e.department_id = d.department_id 
           GROUP BY department_name), 
          avg_cost AS 
      SELECT * FROM dept_costs 
          WHERE dept_total > 
           (SELECT avg FROM (SELECT SUM(dept_total)/COUNT(*) avg 
                FROM dept_costs) 
          ) 
           ORDER BY department_name; 
      

      모든 중 하나를 볼 수 있습니다 함께 모든 예를 들어

      하위 쿼리 인수 분해 : dept_costs AS (...

  • 이보기가 도움이 될 수없는 쿼리를 단순화하기 위해 : 그들은 중간 뷰 객체를 생성 방지하려면?

    • 에 사용 무엇

      . 예를 들어 뷰가 기본 쿼리에서 필터링해야하는 경우