PL/SQL tutorial 73: Bulk Collect with SELECT-INTO statement in Oracle Database

인터넷 최대 무엇입니까? 내가 RebellionRidercom에서 마니 오전 다시 한번 환영합니다

우리가 대량으로 도입 완료 이제 그것은 조치를 취할 시간이다, 수집 앞서 및 PL / SQL 일괄 오라클에서 SELECT-INTO 문 절을 수집 사용하는 방법 데이터 베이스 지금까지 우리는 대량 모두에 의한 오버 헤드를 줄일 수에 관한 수집 사실을 알게 컨텍스트는 쿼리의 효율성을 높이기 위해 전환됩니다 의 그 말은 무엇을 이해하려고 노력하자 [코드 1] 여기서 우리는 PL / SQL 프로그램을 가지고있다 이 프로그램의 실행 섹션은 SQL 작업을하고 SQL 작업 구성 SELECT 문입니다

이 SELECT 문은 열 "이름"의 모든 데이터를 검색한다 직원 테이블과 우리가 선언 절에서 만든 컬렉션으로 저장 같은 프로그램의 내 경우에는 직원 테이블 (107 개) 기록이있다 그것은 귀하의 경우 다를 수 있습니다 우리는이 프로그램을 실행할 때 PL / SQL 런타임 엔진은 모든 PL / SQL 문을 실행합니다 그러나 어떤 SQL 작업을 건너 것 즉시로는로 제어를 전송합니다 는 SQL 런타임 엔진

SQL 엔진은 명령문을 처리하고 다시 PL / SQL 엔진에 결과를 반환합니다 우리의 경우 SQL 작업은 모두 처음 검색하는 SELECT 문입니다 직원 테이블의 이름 앞서 언급 한 바와 같이 수단 내 직원 테이블에 총 107 개 기록이있다 제어는 SQL에서 SQL 엔진에 PL / SQL 엔진에서 107 번, 107 번 이동합니다 PL / SQL 엔진에 엔진 총 PL / SQL 및 SQL 런타임 엔진 사이 (214 개) 제어 점프가있을 것입니다 우리가 이전 튜토리얼에서 컨트롤의 더 높은 도약을 배운 것처럼, 더는 것 결과적으로 성능이 저하됩니다 오버 헤드합니다

이것은 우리가 사이에 그 제어 점프를 줄일 수있는 옵션을 찾을 필요가 있다는 것을 의미 엔진 그 옵션은 대량 수집 절입니다 대량 수집 절은 하나의 컨텍스트 스위치에 다수의 스위치를 압축하는 차례로 쿼리의 성능을 향상시킵니다 그럼 앞으로 이동하고이 코드를 수정할 수 및 대량으로 절을 수집 사용하는 방법 SELECT-INTO 문 그 한 가지 내가 분명히하자 전에이 실행에 올릴 더미 코드는 우리가 같은 오류 우리는 SQL 문을 사용하여 로컬로 만든 모음을 사용할 수 없기 때문에 여기서 뭐

난 그냥 당신이 모든 컨텍스트 전환이 무엇을 이해하고 어떻게 작동하는지 확인하기 위해이 코드를 사용했습니다? 이제 우리는이 코드를 수정하고이 일을 너무 BULK로 절을 수집 있는지 확인합니다 그걸하자 SERVEROUTPUT ON은 SET; 알리다 TYPE OF VARCHAR2 nt_fName가 테이블 (20); FNAME nt_fName; SELECT FIRST_NAME의 BULK은 INTO FNAME를 수집 BEGIN 직원 FROM; 종료; / 여기에 우리가 완전히뿐만 아니라 수정 최적화 된 PL / SQL 벌크 코드를 수집합니다 또한, 당신은 작동이 시간을 것을 확신합니다 그러나 전에 그것을 실행

의 처음 우리가 여기서 무슨 짓을했는지 보자 선언 부분은 여전히 ​​동일합니다 그것은 단지 로컬 PL / SQL의 중첩 테이블은 수집과 대응 포함 우리의 중첩 된 테이블 형식의 컬렉션 변수입니다 당신은 PL / SQL 중첩 테이블로 작업하는 방법을 알아 내 PL / SQL 자습서 (51)을 참조 할 수 있습니다 오라클 데이터베이스입니다 모든 링크는 설명에 있습니다

그럼 우리가 실행 섹션이 있습니다 이 섹션의 내부에서 우리는 SELECT-INTO 문을 가지고있다 이 문장은 다시의 이름 열에서 모든 레코드를 검색한다 직원 테이블 그러나 키워드 INTO 우리가 "대량 수집"절을 지정한 직전에이 시간; 이는 완전히 여기에 게임을 변경합니다 이 단일 조항 만이 코드의 전체 실행 프로세스를 변경합니다

여러분에게 그 방법을 말씀 드리겠습니다 이 프로그램의 실행에 PL / SQL 엔진은 SQL 작업을 통해 올 때, 그것을 의지 클럽 모두 107 컨텍스트는 하나 개의 컨텍스트 스위치로 스위치와 함께 보내 하나의 SQL 엔진이 이동하려면, 대신에 SQL에 개별적으로 전송 엔진과 그 반대 그것은이 시간 대신 (214 개) 스위치 우리는이 컨텍스트 스위치가됩니다 것을 의미합니다 SQL에 PL / SQL에서 하나와 PL / SQL 엔진에 SQL에서 하나 그리고 강력한 대량으로 모든 덕분에 절을 수집합니다

이 SELECT-INTO 문이 인출 된 데이터를 인쇄 할의도 루프를 추가하자 직원 테이블 및 수집 nt_fName에 저장 그래서 우리는 우리가 테이블에서 검색 한 레코드 수를 볼 수 있습니다 1fName

count 루프에서 IDX에 대한 DBMS_OUTPUTPUT_LINE (IDX || ' – '|| FNAME (IDX)); END LOOP; 여기에서 우리는 우리가 단지에 가져온 모든 요소를 ​​인쇄됩니다 우리 FOR 루프를 컬렉션 이제이 코드를 실행하고 결과를 볼 수 있습니다 하지만 그 전에 내가 그 엄지 손가락 치고 물어 빠른 초 할게요 버튼 이 비디오처럼 이상과 같은 흥미로운 튜토리얼을 만들기위한 내게 동기를 유지처럼 매일

또한 많은 같은 동영상이 와서 아직 가입해야합니다 않습니다 즉 이제 가서이 PL / SQL 프로그램을 실행하게 말했다되고 여기에 우리의 결과입니다 당신이 볼 수 있듯이 우리는 성공적으로 직원 테이블에서 (107 개) 기록을 검색했다 우리는 강한 우리에게주는 커서의 도움으로이 코드 미세 조정을 촉진 할 수 우리의 쿼리를 제어 할 수 있습니다

우리는 다음 튜토리얼에서 다룰 것이다 그래서 우리는 BULK는 PL / SQL 수거를 사용하는 방법을 배우게됩니다 다음 튜토리얼에서와 같이, 계속 지켜봐 주시기 바랍니다 쿼리의 성능을 최적화하기 위해 커서 즉 오늘은 여기까지 희망이 튜토리얼은 컨텍스트 스위치가 발생하는 방법을 배우는 당신을 돕고 무엇이 그들의입니다 쿼리의 성능에 미치는 영향 또한, 우리는 BULK를 사용할 수있는 방법 컨텍스트 스위치에 의한 오버 헤드를 극복하기 위해 COLLECT 과 PL / SQL 쿼리의 성능을 향상시킬 수 있습니다

이것은 SELECT INTO 문을 대량 수집 조항에 대한 튜토리얼입니다 시청 주셔서 감사합니다 이 RebellionRidercom에서 마니이다