0
假設表和數據查詢關係有效
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'}]
...
當然,實際的表格有更多的字段和行,因此我想減少網絡上多次發送所有字段的開銷。
這將是足夠了(其實更容易建立一個對象模型),如果數據是從SQL Server像
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(2014/2016)可能嗎?也許有一些內置的功能呢?
或者,即使內置到網絡協議sql-server < - > .net驅動程序?
「因此,我想減少網絡上多次發送所有字段的開銷」。這可能是無用的優化嘗試。 –