关于SQL一对多关系转换的效率思考(续)
上一篇 / 下一篇 2012-05-24 10:17:10 / 个人分类:数据库
那么除了这两种方法,还有没有更快、更好的方法呢?在这里我再介绍两种方法与大家分享、讨论
S` S0j:Qb QU4@#ZSbu051Testing软件测试网J:K$l;C%w闲话不多说,下面进入正文。还是那两张表
D!|c)H_O(d0R6eGy-ypVp4C0 Student:
:MZlD^^:S*m051Testing软件测试网"Ui,H uF*[MUMv9Y
Class:
)N"naUFB E_0u.yA(qEh0想要获得的数据效果为
b SUHl08f [s|5~-r4B0第三种方法:使用SQL函数stuff
8?0^L-[9|/KH0SQL语句如下
4Fw sJA8F2kFYZ0SELECT C.ID, C.ClassName,stuff((select ',' + S.StuName from dbo.Student S where S.ClassID = C.ID for xml path('')),1,1,'')as stuName FROM Class C |
将第三种方法与第二种方法(在程序中获取表Class与表Student所有数据,然后对比ClassID)对比效率,输出结果如下:
#gVw5bu7DG0 00:00:00.549719651Testing软件测试网+cy]y%o$|E;O
00:00:00.351783451Testing软件测试网$fx:r&C-D8qJ
效率比1.56266551Testing软件测试网Et
yTG7{*|
=============================51Testing软件测试网}$a/~6D-HU
00:00:01.0181020
O]t@/[ Z%Z0 00:00:00.706091351Testing软件测试网n6hl.z2f0k b4}KP
效率比1.441884
&O
q"v9B9n,h0 =============================
9_1G"jAX&j0 00:00:01.491283151Testing软件测试网P4O q| z1~"cD
00:00:01.0682834
Y9|HnS(g$ZeB0 效率比1.39596251Testing软件测试网5`
WL5`
Ia;p})c
=============================
|&V2uUqxl0 00:00:01.9636678
TMlDO,h0 00:00:01.4199062
oP3D-B.PIpO*n0 效率比1.382956
4`H&xf,q;Hf0 =============================
z%NU#X K*N%d0 00:00:02.439157451Testing软件测试网6t&O
M`VlK
00:00:01.771243151Testing软件测试网$G}(zXR#cWL x
效率比1.37708851Testing软件测试网`5U3@h{{6FT[i
=============================
]:Fz9_+P~)W1~!_0 00:00:02.9111560
MT G1\As8i.E0 00:00:02.1255719
Fb
L3E5e2HbR[2c0 效率比1.369587
p&\2|
lt
{7})\:Z0 =============================
T,X5I@([ ~`0 00:00:03.3923697
7Q&g#s2p w1y0 00:00:02.506969951Testing软件测试网3twm,I-t~rO
效率比1.35317551Testing软件测试网4eIBP8\}5{
=============================51Testing软件测试网s5]t;k~
00:00:03.8671226
iT
GN
[0 00:00:02.859454151Testing软件测试网-D:xD
E+l
效率比1.352399
"a,gv5w{a0 =============================
:T"Z.b"BE%p1W.`6R0 00:00:04.331401251Testing软件测试网.qy8Mwl0e
H+g
00:00:03.2064415
m)U&_y_YV0 效率比1.350844
@wK'v~0 =============================
`
PA-iTJ.RU!S#O*Jm0 00:00:04.8019142