2009-02-28 6 views
0

データベースから取り出してxmlを生成するために何千もの階層レコードがある場合は、パフォーマンスとCPU使用率を下げて最適な方法は何でしょうか?データベース内のデータからXMLを生成する最良の方法は何ですか?

+0

おそらく、アプリケーションとデータベースの構造に関する詳細情報を提供できますか? – thomasrutter

+0

これは、人に関するデータを返す開発中のカスタムアプリケーションです。その人は、子テーブルに10000までのレコードを持つことができます。だから、 ...一般情報... のような.... 10000要素... になります – renil

答えて

7

あなたは

FOR XML  

クエリ の結果をXML文書として返される使用してSQL Server 2005から直接出力XMLすることができます。セットは、要素タグ

として汎用 識別子とXML要素であり、結果の各行3 RAW、AUTO とEXPLICITオプション

RAW 

の いずれかで使用されなければなりません

AUTO  

結果は、単純な ネストされたXMLツリーに返されます。 SELECT句

EXPLICIT  

の各テーブル項目に対して生成される要素は、明示的に得 XMLツリーの形状を指定します。 クエリは、ネストに関する追加 情報が

XMLDATA 

スキーマを返しますが指定されているように 特定の方法で記述する必要がありますが、結果

にルート要素を追加しません。
ELEMENTS  

列がであることを指定します。子要素としてテーブル にが返されました。指定しない場合、それらは が

XMLSCHEMA 

を使用して、同時にインラインXSDスキーマを生成

を属性としてあなたができる

XSINIL 

を使用してレコード内のNULL値を扱うことができるマップされますまた、バイナリ形式でデータを返します。

MSDN for XML support in SQL Server 2005については、XQuery、XMLデータタイプなどの技術について見てみたいかもしれません。

1

Oracleにはツールがあるので、SQL Serverもそうだと思いますが、スキーマが必要です。私は周りに持っているPHPスクリプトを使用して小さなセットの個人的には、カスタマイズの必要性を持つ大きなもののために別の話です。

2

これは、アプリケーションとデータベースサーバーが別々のマシンにある場合、負荷を軽減するCPUを指定する必要があります。データベースが既にロードされている場合は、アプリケーションサーバーでXML変換を行う方がよい場合もあります。そうでない場合は、SQL Server FOR XML機能を使用してください。

関連する問題