これは「ベストプラクティス」の質問です。私たちはこのトピックについて社内で話し合っており、より多くの聴衆から意見を聞きたいと思っています。
MS SQL Server
通常の列と行を持つ従来のテーブルにデータを保存する必要があります。DataTable
Webアプリケーションにを返す必要がある場合もあれば、JSON
文字列を返す必要がある場合もあります。
現在、テーブルを中間層に戻し、JSON
文字列に解析します。これはほとんどの部分でうまく機能しているように見えますが、大きなデータセットでは時間がかかることがあります(データを解析し、テーブルを返さない)。
DataTable
または文字列を選択的に返すようにストアドプロシージャを修正することを検討していJSON
ます。@isJson bit
SPにパラメータを追加するだけです。
ユーザーがテーブルの代わりに文字列を必要とする場合、SPは次のようなクエリを実行します。
DECLARE @result varchar(MAX)
SELECT @result = COALESCE(@results ',', '') + '{id:"' + colId + '",name:"' + colName + '"}'
FROM MyTable
SELECT @result
これにより、次のようなものが生成されます。
{id:"1342",name:"row1"},{id:"3424",name:"row2"}
もちろん、ユーザーは@isJsonパラメーターにfalseを渡すことによってテーブルを取得することもできます。
データストレージは影響を受けず、既存のビューやその他のプロセスも影響を受けないことを明確にしたいと思います。これは、一部のストアドプロシージャの結果のみに対する変更です。
私の質問は次のとおりです。
- 大規模なアプリケーションでこれを試した人はいますか?もしそうなら、結果はどうでしたか?
- このアプローチでどのような問題が発生しましたか/予想しますか?
- この方法でストアドプロシージャを変更したり、中間層で文字列を解析したりする以外に、SQL ServerでテーブルからJSONに移動するためのより高速な方法はありますか?