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

Điều chỉnh hiệu suất PL / SQL cho các truy vấn ký tự đại diện LIKE '% ...%'

Như đã đề cập, bạn có thể thêm chỉ mục ngữ cảnh ctx vào các cột tên.

giả sử một số lượng nhỏ bản ghi được cập nhật, 1 tùy chọn là làm mới chỉ mục của bạn hàng ngày. (và ghi lại khi nó xảy ra)

sau đó thêm cột &chỉ mục ngày cập nhật cuối cùng vào bảng đang được tìm kiếm của bạn.

Có thể quét chỉ mục ctx của bạn để tìm phần lớn dữ liệu cũ không thay đổi và chọn từ phần trăm nhỏ dữ liệu cập nhật bằng cách sử dụng LIKE giao dịch:

WHERE (lastupdated<lastrefresh AND contains(name,'%ABC%')) 
   OR (lastupdated>lastrefresh AND name like '%ABC%')

LƯU Ý:bạn có thể thấy kế hoạch truy vấn của mình hơi phức tạp (nhiều chuyển đổi bitmap thành id hàng) trong trường hợp đó, hãy tách 2 phần của HOẶC thành một truy vấn UNION ALL. Ví dụ:

SELECT id FROM mytable   
    WHERE 
    (lastupdate>lastrefresh and name LIKE '%ABC%')
    UNION ALL
    SELECT id FROM mytable   
    WHERE lastupdate<lastrefresh and CONTAINS(name, '%ABC%', 1) > 0


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. làm thế nào để thực hiện một hàm để trả về loại hàng từ một bảng trong pl / sql?

  2. Thử thách kiểm tra cơ sở dữ liệu Oracle - So sánh dữ liệu lược đồ

  3. ORA-00904 Số nhận dạng không hợp lệ ”cho một số nhận dạng trong một nhóm theo mệnh đề

  4. Khai báo &thiết lập các biến trong một câu lệnh được chọn

  5. Con trỏ trong oracle là gì