Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

Tăng hiệu suất với Thu thập hàng loạt trong Oracle

Sử dụng Thu thập hàng loạt để truy xuất nhiều hàng dữ liệu trong một thao tác tìm nạp. Nhiều hàng dữ liệu trong một lần tìm nạp giúp giảm số lượng các chuyến đi vòng quanh mạng và cải thiện hiệu suất.
Ví dụ sau đây mô tả công việc được liệt kê trong bảng JOB_HISTORY là công việc mà nhân viên có nhưng cũng là công việc mà nhân viên đó đã làm sau khi công việc được liệt kê trong bảng JOB_HISTORY.
TẠO HOẶC THAY THẾ THỦ TỤC Promotion_Rev

IS
old_job hr.job_history.job_id% TYPE;
new_job hr.job_history.job_id% TYPE;
nincr NUMBER;

CURSOR cselectjob

CHỌN worker_id,
start_date,
end_date,
job_id
FROM hr.job_history
ĐẶT HÀNG BỞI worker_id, start_date;

TYPE jh_rec LÀ GHI CHÚ (
worker_id hr.job_history.employee_id% TYPE,
start_date hr.job_history.start_date% TYPE,
end_date hr.job_history.end_date% TYPE,
job_id hr .job_history.job_id% TYPE
);

TYPE jh_table LÀ BẢNG CHỈ SỐ jh_rec
THEO PLS_INTEGER;

jh_table_array jh_table;
BEGIN
MỞ cselectjob;

TÌM KIẾM cselectjob
THU MUA SỐ LƯỢNG LỚN VÀO jh_table_array;

ĐÓNG cselectjob;

FOR counter IN jh_table_array.FIRST .. jh_table_array.LAST
LOOP
IF counter =jh_table_array.LAST
THEN
nincr:=0;
ELSE
nincr :=1;
HẾT NẾU;

old_job:=jh_table_array (bộ đếm) .job_id;

NẾU jh_table_array (counter) .employee_id =
jh_table_array (counter + nincr) .employee_id
THEN
new_job:=jh_table_array (counter + nincr) .job_id;
ELSE
CHỌN job_id
INTO new_job
FROM hr.employees
WHERE hr.employees.employee_id =
jh_table_array (counter) .employee_id;
HẾT IF;

DBMS_OUTPUT.put_line ('Nhân viên'
|| jh_table_array (bộ đếm) .employee_id
|| 'đã có việc làm'
|| old_job
|| 'cho'
| | (jh_table_array (counter) .end_date
- jh_table_array (counter) .start_date)
|| 'ngày và đã chuyển đến công việc'
|| new_job
|| '.');
HẾT LOOP;
HẾT;
/

Thực hiện quy trình sau:

đặt serveroutput on;
BEGIN
promotion_rev;
END;
/
Đầu ra sẽ có dạng như sau:

Nhân viên 101 đã có công việc AC_ACCOUNT trong 1497 ngày và chuyển sang công việc AC_MGR.
Nhân viên 101 đã có công việc AC_MGR trong 1234 ngày và chuyển sang công việc AD_VP.
Nhân viên 102 đã có công việc IT_PROG trong 2018 ngày và chuyển sang công việc AD_VP.
Nhân viên 114 có công việc ST_CLERK trong 647 ngày và chuyển sang công việc PU_MAN.
Nhân viên 122 có công việc ST_CLERK trong 364 ngày và chuyển sang công việc ST_MAN.
Nhân viên 176 có công việc SA_REP trong 282 ngày và đã chuyển đi đến công việc SA_MAN.
Nhân viên 176 có công việc SA_MAN trong 364 ngày và chuyển sang công việc SA_REP.
Nhân viên 200 đã có công việc AD_ASST trong 2100 ngày và chuyển sang công việc AC_ACCOUNT.
Nhân viên 200 đã có công việc AC_ACCOUNT cho 1644 ngày và chuyển sang công việc AD_ASST.
Nhân viên 201 có công việc MK_REP trong 1401 ngày và chuyển sang công việc MK_REP.
Thủ tục PL / SQL đã hoàn tất thành công.

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Gọi thủ tục lưu trữ Oracle từ C #?

  2. Bật ảo hóa trong BIOS trong máy tính xách tay hoặc máy tính để bàn cho máy ảo Virtualbox

  3. Làm cách nào để tạo bản sao của bảng Oracle mà không cần sao chép dữ liệu?

  4. Cách xem câu lệnh Oracle SQL thực đang được thực thi

  5. Mảng trong mệnh đề IN () oracle PLSQL