Chỉ cần yêu cầu một số giải thích về sự khác biệt giữa 2. Từ những gì tôi hiểu, giải thích kế hoạch cung cấp cho bạn những lý thuyết kế hoạch thực hiện trong khi DBMS_XPLAN.DISPLAY_CURSOR mang đến cho bạn thực tế kế hoạch thực hiện với số liệu thống kê thực hiện cho tuyên bố.DBMS_XPLAN.DISPLAY_CURSOR vs Giải thích kế hoạch nếu không sử dụng gather_plan_statistics gợi ý
EXPLAIN PLAN lưu trữ dữ liệu này trong một PLAN_TABLE trong khi DBMS_XPLAN sử dụng chế độ xem V $ SQL_PLAN, V $ SQL_PLAN_STATISTICS và V $ SQL_PLAN_STATISTICS_ALL cho thông tin của nó.
Tuy nhiên, để DISPLAY_CURSOR thu thập số liệu thống kê thời gian thực tế thực tế cho thống kê đó, bạn cần đặt gợi ý /*+ gather_plan_statistics */
. Nếu không, chỉ V $ SQL_PLAN được lấp đầy mà sẽ chỉ cung cấp cho bạn kế hoạch thực hiện nhưng không cung cấp số liệu thống kê thực thi thực tế. Chỉ với /*+ gather_plan_statistics */
trong đó V $ SQL_PLAN_STATISTICS được lấp đầy. Vì vậy, câu hỏi của tôi là, nếu tôi không sử dụng gợi ý gather_plan_statistics, sẽ GIẢI THÍCH KẾ HOẠCH và DISPLAY_CURSOR luôn cho tôi cùng một kế hoạch thực hiện (cho cùng một tuyên bố) không? Không.
Hmm nhưng nếu bạn không sử dụng/* + gather_plan_statistics */thì nó sẽ không thu thập số liệu thống kê thời gian thực thực tế cho tuyên bố đúng?Nó sẽ chỉ hiển thị các hồng y ước tính; I E. bạn sẽ không nhận được cột 'A-ROWS' khi bạn gọi: dbms_xplan.display_cursor (format => 'allstats') nếu bạn không sử dụng gợi ý – BYS2
Với gợi ý bạn nhận được một sql_id khác. Bạn có thể kích hoạt thu thập số liệu thống kê này bằng cách thiết lập stats_level = 'ALL' trong phiên ứng dụng của bạn (hoặc ở cấp độ cá thể trong suốt thời gian chạy ứng dụng). Nó chỉ nên được sử dụng để chụp ảnh sự cố; nó giới thiệu thêm chi phí so với 'điển hình'. –