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

Hasil tak terduga dari CTE

Tidak ada yang tidak terduga dari hasil itu, kecuali mungkin jika Anda tidak memahaminya.

Setiap CTE diselesaikan each and every time itu dirujuk. Ya, inilah mengapa CTE sederhana pada tabel yang sangat transaksional dapat mengembalikan 4 baris dalam satu referensi dan 5 baris di 2 level berikutnya ke bawah.

Namun, pada sampel Anda, itu karena ORDER BY NEWID(), memberikan setiap resolusi CTE asli sebuah row_number()-ing yang berbeda. Apakah menurut Anda CTE disimpan dalam memori dan di-cache? Di situs SQLFiddle, di bawah hasil Anda, ada tautan "lihat rencana eksekusi". Ini menunjukkan 2 pindaian tabel yang berbeda dan terpisah .




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Mengapa kolom TEXT hanya mengembalikan 4096 byte?

  2. gunakan variabel dalam pernyataan FROM

  3. SQL Server:temukan duplikat dalam tabel berdasarkan nilai dalam satu kolom

  4. Cara Mendapatkan Nilai yang Tidak Mengandung Angka di SQL Server

  5. MENGUBAH DATABASE / TAMBAHKAN FILE / VARIABEL NAMA FILE?