CLOB型の列にある特定のXMLノードをカウントするための最適化されたSQLクエリを作成しようとしていましたが、今はREGEXP_COUNTを使用してすべての行とすべてのXMLしかし、これはひどく遅いです。このようOracle SQL - Clob型の列のXMLノードをカウントする
:
SELECT sum(REGEXP_COUNT(clobtype_column_withXMLs, '/Node_Closing_tag', 1)) as 'Node_number' FROM MY_TABLE;
これは動作しますが、タグの数百万でそれは文字通りの年齢を取ります。
私はXML構造を回避し、カウント時間を短縮したいと考えています。私は何かを見つけましたが、それらのほとんどは列の型をxmlに変更し、xqueryと他のDML関数を使用します。
私の場合、私はテーブルを変更することはできません、私は数だけ、指定されたノードが列に発生する回数が必要です。
マイテーブル構造:
ないXML表、各種カラムタイプとすべての行は、異なるサイズのXML(文字の数百万)を含有するCLOB type column
、。 XMLはかなり複雑な構造を持っている、私が探しています1つのノードが真ん中にあります。
1/2/3/4/5/I'm_searching_for_this/contains_multiple_nodes
は、表には何も変更せずに、このような構造のノードをカウントする任意の高速な方法はありますか?速いとは、は数時間で最大5億ノードをカウントします。。
を '「私はいくつかのことを発見したが、それらのほとんどは、XMLに列タイプを変更伴い、XQueryおよび他のDML機能を使用しています。」'、あなたの答えを見つけるだから – lad2025
"私の場合、テーブルを変更できません" – DragonTester
XQueryを使用するためにテーブルの列の種類を変更する必要はありません。オンザフライでの変換、抽出、カウントが現在行っている処理より速いかどうかを実験する必要があります。 –