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

Cara mengoptimalkan SQL 'XQuery'

Jika Anda hanya ingin satu nilai dari setiap baris, tidak perlu menggunakan cross apply .

select XMLCol.value('(/*[local-name()=sql:variable("@Root")]
                      /*[local-name(.)=sql:variable("@Entity")]
                      /*[local-name(.)=sql:variable("@ParentNode")]
                      /*[local-name(.)=sql:variable("@Separator")]
                      /*[local-name(.)=sql:variable("@ChildNode")])[1]', 'varchar(max)')
from XMLTable

Cara lain untuk mendapatkan hal yang sama adalah dengan menggunakan FLWOR . Dalam pengujian terbatas saya, ini akan berjalan sedikit lebih cepat.

select XMLCol.value('(for $n1 in /*,
                          $n2 in $n1/*,
                          $n3 in $n2/*,
                          $n4 in $n3/*,
                          $n5 in $n4/*
                      where $n1[local-name(.) = sql:variable("@Root")] and
                            $n2[local-name(.) = sql:variable("@Entity")] and
                            $n3[local-name(.) = sql:variable("@ParentNode")] and
                            $n4[local-name(.) = sql:variable("@Separator")] and
                            $n5[local-name(.) = sql:variable("@ChildNode")]
                      return $n5
                     )[1]', 'varchar(max)')
from XMLTable



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Kebiasaan Buruk:Menghindari NULL di SQL Server

  2. Bersenang-senang dengan BULK INSERT SQL SERVER - ketik ketidakcocokan atau karakter yang tidak valid untuk halaman kode yang ditentukan

  3. SqlDataAdapter.Fill() - Konversi melimpah

  4. 4 Alasan Mengapa Anda Harus Memprioritaskan Pemantauan Database dalam Perencanaan 2020

  5. Bagaimana menemukan baris berurutan berdasarkan nilai kolom?