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

Buộc Oracle trả lại N hàng trên cùng với SKIP ĐÃ KHÓA

"Từ những gì tôi đã thấy, Oracle áp dụng vị từ WHERE trước khi xác định những hàng nào cần bỏ qua."

Chuẩn rồi. Đó là cách duy nhất có thể. Bạn không thể bỏ qua một hàng trong tập kết quả cho đến khi xác định được tập kết quả.

Câu trả lời đơn giản là không giới hạn số hàng được trả về bởi câu lệnh SELECT. Bạn vẫn có thể sử dụng các gợi ý FIRST_ROWS_n để hướng dẫn trình tối ưu hóa rằng bạn sẽ không lấy toàn bộ tập dữ liệu.

Phần mềm gọi SELECT chỉ nên chọn n hàng đầu tiên. Trong PL / SQL, nó sẽ là

DECLARE
  CURSOR c_1 IS  
    SELECT /*+FIRST_ROWS_1*/ qt.ID
    FROM QueueTest qt
    WHERE Locked IS NULL
    ORDER BY PRIORITY
    FOR UPDATE SKIP LOCKED;
BEGIN
  OPEN c_1;
  FETCH c_1 into ....
  IF c_1%FOUND THEN
     ...
  END IF;
  CLOSE c_1;
END;


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Chỉ thực thi một trình kích hoạt khi một số cột nhất định được cập nhật (Máy chủ SQL)

  2. Cải thiện điều chỉnh hiệu suất SQL Server với 3 mẹo sau

  3. Xem liệu một Bảng có Ràng buộc DEFAULT trong SQL Server hay không bằng cách sử dụng OBJECTPROPERTY ()

  4. Làm cách nào để bạn mở tệp SDF (SQL Server Compact Edition)?

  5. Cài đặt Tiện ích mở rộng tác nhân SQL Server trên Azure Data Studio