Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Paksa Oracle untuk mengembalikan baris TOP N dengan SKIP LOCKED

"Dari apa yang saya lihat, Oracle menerapkan predikat WHERE sebelum menentukan baris mana yang harus dilewati."

Ya. Ini adalah satu-satunya cara yang mungkin. Anda tidak dapat melewatkan satu baris dari kumpulan hasil sampai Anda menentukan kumpulan hasil.

Jawabannya adalah tidak membatasi jumlah baris yang dikembalikan oleh pernyataan SELECT. Anda masih dapat menggunakan petunjuk FIRST_ROWS_n untuk mengarahkan pengoptimal bahwa Anda tidak akan mengambil set data lengkap.

Perangkat lunak yang memanggil SELECT seharusnya hanya memilih n baris pertama. Di PL/SQL, itu akan menjadi

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. Dapatkan Jumlah Upaya Login yang Gagal untuk Login karena Kata Sandi yang Salah di SQL Server (T-SQL)

  2. Bagaimana cara membuat batasan unik yang juga memungkinkan nol?

  3. Cara Mempercepat SQL Server Anda Menggunakan Pemantauan Kinerja Basis Data

  4. Cara Membuat Batasan Cek pada Kolom Tunggal di SQL Server - Tutorial SQL Server / TSQL Part 83

  5. Tabel Periksa SQL Server Dipartisi