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

5 truy vấn SQL tốn thời gian hàng đầu trong Oracle

Tôi thấy câu lệnh SQL này là một nơi hữu ích để bắt đầu (xin lỗi, tôi không thể gán điều này cho tác giả gốc; tôi đã tìm thấy nó ở đâu đó trên internet):

SELECT * FROM
(SELECT
    sql_fulltext,
    sql_id,
    elapsed_time,
    child_number,
    disk_reads,
    executions,
    first_load_time,
    last_load_time
FROM    v$sql
ORDER BY elapsed_time DESC)
WHERE ROWNUM < 10
/

Điều này tìm các câu lệnh SQL hàng đầu hiện được lưu trữ trong bộ đệm SQL được sắp xếp theo thời gian đã trôi qua. Các câu lệnh sẽ biến mất khỏi bộ nhớ cache theo thời gian, vì vậy việc cố gắng chẩn đoán công việc hàng loạt của đêm qua có thể không tốt khi bạn bắt đầu làm việc vào buổi trưa.

Bạn cũng có thể thử sắp xếp theo disk_reads và các lần thực thi. Việc thực thi rất hữu ích vì một số ứng dụng kém gửi cùng một câu lệnh SQL quá nhiều lần. SQL này giả định rằng bạn sử dụng các biến liên kết một cách chính xác.

Sau đó, bạn có thể lấy sql_idchild_number của một tuyên bố và đưa chúng vào em bé này:-

SELECT * FROM table(DBMS_XPLAN.DISPLAY_CURSOR('&sql_id', &child));

Điều này cho thấy kế hoạch thực tế từ bộ đệm SQL và toàn bộ văn bản của SQL.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Thứ tự hàng mặc định cho truy vấn chọn trong oracle

  2. PLS-00428:mệnh đề INTO được mong đợi trong câu lệnh SELECT này

  3. Oracle SQL - REGEXP_LIKE chứa các ký tự không phải là a-z hoặc A-Z

  4. Ví dụ về công việc DBMS_SCHEDULER Chạy mỗi giờ

  5. các cách để tránh các bảng tạm thời toàn cục trong oracle