Kế hoạch thực thi do trình tối ưu hóa đã chọn có thể khác nhau rất nhiều ngay cả giữa hai môi trường của cùng một phiên bản, không chỉ 11g và 12c. Nó phụ thuộc vào nhiều yếu tố, nhưng chủ yếu là:
- Số hàng trong bảng (chúng có giống nhau giữa các env không?)
- Có những chỉ mục nào (cả hai db đều có chỉ mục giống hệt nhau?)
- Có thống kê cho bảng và chỉ mục không và chúng cập nhật như thế nào? Nếu không cập nhật, vui lòng thu thập số liệu thống kê cho các bảng và các chỉ mục.
Nếu bạn có thể đăng những chi tiết này, tôi có thể cung cấp một câu trả lời hữu ích hơn.
Ngoài ra, mã trông giống như được tạo tự động, nếu bạn có quyền sửa đổi chúng, dựa trên các chi tiết, chúng tôi có thể đề xuất truy vấn được viết lại và / hoặc gợi ý.
Nếu bạn không thể sửa đổi mã, bạn có thể buộc một kế hoạch bằng Quản lý kế hoạch SQL (SPM) - xuất từ db nơi nó chạy nhanh hơn và nhập vào db khác.
CẬP NHẬT
Sử dụng phiên bản SQL đơn giản này để tạo kế hoạch:
SELECT * FROM DMProgDate_00001
WHERE ProgressOID IN (
SELECT OID FROM DMProgress_00001
WHERE Project = 'Moho'
AND Phase = 'Procurement'
AND Displine = 'Q340'
AND ROWNUM <= 20
ORDER BY actCode
);