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

Khi nào sử dụng gợi ý trong truy vấn tiên tri

Hầu hết các gợi ý là một cách truyền đạt ý định của chúng tôi với trình tối ưu hóa. Ví dụ:leading gợi ý bạn đề cập có nghĩa là tham gia các bảng theo thứ tự này . Tại sao điều này là cần thiết? Thường thì đó là do thứ tự kết hợp tối ưu không rõ ràng, do truy vấn được viết sai hoặc thống kê cơ sở dữ liệu không chính xác.

Vì vậy, một trong những cách sử dụng các gợi ý như leading là tìm ra đường dẫn thực thi tốt nhất, sau đó tìm ra lý do tại sao cơ sở dữ liệu không chọn phương án đó mà không có gợi ý. Thu thập số liệu thống kê mới có giải quyết được vấn đề không? Viết lại mệnh đề FROM có giải quyết được vấn đề không? Nếu vậy, chúng ta có thể loại bỏ các gợi ý và triển khai SQL trần.

Đôi khi, có những lúc chúng tôi không thể giải quyết vấn đề hóc búa này và phải giữ nguyên các gợi ý trong Sản xuất. Tuy nhiên, điều này phải là một ngoại lệ hiếm hoi. Oracle đã có rất nhiều người rất thông minh làm việc trên Trình tối ưu hóa dựa trên chi phí trong nhiều năm, vì vậy các quyết định của nó thường tốt hơn chúng tôi.

Nhưng có những gợi ý khác mà chúng tôi sẽ không chớp mắt để xem trong Sản xuất. append thường rất quan trọng để điều chỉnh các bộ chèn số lượng lớn. driving_site có thể quan trọng trong việc điều chỉnh các truy vấn phân tán.

Ngược lại, các gợi ý khác hầu như luôn bị lạm dụng. Có parallel , Tôi đang nói về bạn. Đặt /*+ parallel (t23, 16) */ một cách mù quáng có thể sẽ không làm cho truy vấn của bạn chạy nhanh hơn mười sáu lần và không thường xuyên dẫn đến chậm hơn truy xuất so với thực thi đơn luồng.

Vì vậy, tóm lại, không có lời khuyên nào có thể áp dụng được cho thời điểm chúng ta nên sử dụng các gợi ý. Những điều quan trọng là:

  1. hiểu cách hoạt động của cơ sở dữ liệu và đặc biệt là cách hoạt động của trình tối ưu hóa dựa trên chi phí;
  2. hiểu mỗi gợi ý làm gì;
  3. kiểm tra các truy vấn gợi ý trong môi trường điều chỉnh phù hợp với dữ liệu tương đương Sản xuất.

Rõ ràng nơi tốt nhất để bắt đầu là tài liệu Oracle . Tuy nhiên, nếu bạn cảm thấy muốn tiêu một số tiền, hãy xem cuốn sách của Jonathan Lewis về Trình tối ưu hóa dựa trên chi phí là khoản đầu tư tốt nhất mà bạn có thể thực hiện.



  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ành phần script thiếu tham chiếu oracle

  2. Hàm NVL2 () trong Oracle

  3. những gì xảy ra trong giai đoạn áp dụng chuẩn bị

  4. Cách xóa tất cả các mục được lưu trong bộ nhớ cache trong Oracle

  5. Cách định cấu hình Máy chủ WebLogic cho Eclipse hiện có