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

Subr hay LIKE nhanh hơn trong Oracle?

Giả sử hiệu suất tối đa là mục tiêu, tôi nên chọn SUBSTR(my_field,1,6) và tạo chỉ mục dựa trên chức năng để hỗ trợ truy vấn.

CREATE INDEX my_substr_idx
    ON my_table( substr( my_field,1,6 ) );

Như những người khác đã chỉ ra, SUBSTR(my_field,1,6) sẽ không thể sử dụng chỉ mục thông thường trên MY_FIELD . Phiên bản LIKE có thể sử dụng chỉ mục, nhưng ước tính bản số của trình tối ưu hóa trong trường hợp đó nói chung là khá kém, vì vậy có nhiều khả năng không sử dụng chỉ mục khi nó hữu ích hoặc sử dụng chỉ mục khi quét bảng sẽ thích hợp hơn. Lập chỉ mục biểu thức thực tế sẽ cung cấp cho trình tối ưu hóa nhiều thông tin hơn để làm việc với nó, do đó, có nhiều khả năng chọn chỉ mục chính xác hơn. Ai đó thông minh hơn tôi có thể đề xuất cách sử dụng thống kê trên các cột ảo trong 11g để cung cấp cho trình tối ưu hóa thông tin tốt hơn cho truy vấn LIKE.

Nếu 6 là một biến (tức là đôi khi bạn muốn tìm kiếm 6 ký tự đầu tiên và đôi khi muốn tìm kiếm một số khác), có thể bạn sẽ không thể tìm ra chỉ mục dựa trên hàm để hỗ trợ truy vấn đó. Trong trường hợp đó, bạn có thể tốt hơn với những quyết định mơ hồ của trình tối ưu hóa với công thức LIKE.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Trang chủ Oracle Chỉ đọc

  2. Nhà cung cấp không tương thích với phiên bản máy khách Oracle

  3. Cài đặt Oracle 12c Enterprise Edition trên Windows 7

  4. Làm cách nào để khắc phục nguyên nhân gây ra ngoại lệ Hibernate IllegalArgumentException xảy ra khi gọi setter?

  5. KEY NGOẠI LỆ VỀ XÓA Lỗi HẠN CHẾ - Oracle