のは、テーブルとデータクエリ関係を効率的
CREATE TABLE #tA (id int, fieldA varchar(16))
CREATE TABLE #tB (idA int, id int, fieldB varchar(16))
CREATE TABLE #tC (idB int, id int, fieldC varchar(16))
INSERT into #tA VALUES (1, 'A1'), (2, 'A2')
INSERT into #tB VALUES (1, 1, 'A1-B1'), (1, 2, 'A1-B2'), (2, 3, 'A2-B1')
INSERT into #tC VALUES (1, 1, 'A1-B1-C1'), (2, 2, 'A1-B2-C1'), (2, 3, 'A1-B2-C2'), (3, 4, 'A2-B1-C1')
を想定してみましょう私は
SELECT A.fieldA, B.fieldB, C.fieldC
FROM #tA as A
JOIN #tB as B ON b.idA=A.id
JOIN #tC as C ON c.idB=b.id
ですべてのデータを完全に関係を照会することができ、その結果は、オン
fieldA fieldB fieldC
A1 A1-B1 A1-B1-C1
A1 A1-B2 A1-B2-C1
A1 A1-B2 A1-B2-C2
A2 A2-B1 A2-B1-C1
ですクライアント側
のようなオブジェクトモデルを作成したい/必要があります{
name: "A1",
Bs: [
{
name: 'A1-B1',
Cs: [{name: 'A1-B1-C1'}]
},
{
name: 'A1-B2',
Cs: [{name: 'A1-B2-C1'}, {name: 'A1-B2-C2'}]
...
もちろん、実際のテーブルにはより多くのフィールドと行があるため、すべてのフィールドを複数回送信するためのネットワークのオーバーヘッドを削減したいと考えています。
これは、データが「親」が変更された場合にのみです
fieldA fieldB fieldC
A1 A1-B1 A1-B1-C1
null A1-B2 A1-B2-C1
null null A1-B2-C2
A2 A2-B1 A2-B1-C1
のようなSQL Serverから返された場合には、(S)値を書き込む十分な(そして実際にオブジェクト・モデルを構築しやすい)でしょうその "親"テーブルを結果セットに追加し、otherをそれらのフィールドにnullに設定します。
これは(効率的に)SQL Server(2014/2016)で可能ですか?たぶんそれのためのいくつかの組み込み関数ですか?
それはネットワークプロトコルのSQL-server < - > .net-driverに組み込まれていますか?
"したがって、すべてのフィールドを複数回送信するためのネットワークのオーバーヘッドを削減したいと考えています。これはおそらく最適化では役に立たない試みです。 –