sql >> データベース >  >> RDS >> Sqlserver

'XQuery'SQLを最適化する方法

    すべての行から1つの値のみが必要な場合は、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
    

    同じようにする別の方法は、FLWOR を使用することです。 。私の限られたテストでは、これは少し速く実行されます。

    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. 行の挿入時に最後のID(IDENTITY)を返すVB.NET MySQL

    2. PostgreSQL-Base64画像の文字列をBYTEA列に挿入する方法は?

    3. オラクルは、制約として使用するための組み込みの通貨テーブルを提供していますか?

    4. データベースがテーブルを取っていない