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

Bất kỳ tác động hiệu suất nào trong Oracle khi sử dụng LIKE 'string' vs ='string'?

Có một sự khác biệt rõ ràng khi bạn sử dụng các biến liên kết, mà bạn nên sử dụng trong Oracle cho bất kỳ thứ gì khác ngoài việc lưu trữ dữ liệu hoặc các hoạt động dữ liệu hàng loạt khác.

Lấy trường hợp của:

SELECT * FROM SOME_TABLE WHERE SOME_FIELD LIKE :b1

Oracle không thể biết rằng giá trị của:b1 là '% some_value%', hoặc 'some_value', v.v. cho đến thời gian thực thi, vì vậy nó sẽ đưa ra ước tính về bản chất của kết quả dựa trên heuristics và đưa ra một kế hoạch thích hợp có thể phù hợp hoặc không với các giá trị khác nhau của:b, chẳng hạn như '% A', '%', 'A', v.v.

Các vấn đề tương tự có thể áp dụng với một vị từ bình đẳng nhưng phạm vi của các cấp số có thể dẫn đến ước tính dễ dàng hơn nhiều dựa trên thống kê cột hoặc sự hiện diện của một ràng buộc duy nhất, chẳng hạn.

Vì vậy, cá nhân tôi sẽ không bắt đầu sử dụng LIKE để thay thế cho =. Đôi khi, trình tối ưu hóa khá dễ bị đánh lừa.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Sử dụng PL / SQL làm cách nào để tôi đưa nội dung của tệp vào một đốm màu?

  2. cách kiểm tra tất cả các ràng buộc trên bảng trong oracle

  3. Luôn hiển thị vị trí thập phân trong SQL?

  4. UNPIVOT trên một số cột không xác định

  5. PL / SQL, làm thế nào để thoát khỏi dấu nháy đơn trong một chuỗi?