关于SQL一对多关系转换的效率思考(续)

发表于:2012-5-23 09:49

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:CrazyJinn    来源:51Testing软件测试网采编

  之前写了一篇文章关于SQL函数效率的一些测试与思考,在当中提到了将数据库中一对多关系转换为一对一关系显示的两种方法:第一种方法是在数据库中写一个函数,第二种方法为在程序中获取表Class与表Student所有数据,然后对比ClassID。

  那么除了这两种方法,还有没有更快、更好的方法呢?在这里我再介绍两种方法与大家分享、讨论

  闲话不多说,下面进入正文。还是那两张表

  Student:

  Class:

  想要获得的数据效果为

  第三种方法:使用SQL函数stuff

  SQL语句如下

SELECT 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)对比效率,输出结果如下:

  00:00:00.5497196
  00:00:00.3517834
  效率比1.562665
  =============================
  00:00:01.0181020
  00:00:00.7060913
  效率比1.441884
  =============================
  00:00:01.4912831
  00:00:01.0682834
  效率比1.395962
  =============================
  00:00:01.9636678
  00:00:01.4199062
  效率比1.382956
  =============================
  00:00:02.4391574
  00:00:01.7712431
  效率比1.377088
  =============================
  00:00:02.9111560
  00:00:02.1255719
  效率比1.369587
  =============================
  00:00:03.3923697
  00:00:02.5069699
  效率比1.353175
  =============================
  00:00:03.8671226
  00:00:02.8594541
  效率比1.352399
  =============================
  00:00:04.3314012
  00:00:03.2064415
  效率比1.350844
  =============================
  00:00:04.8019142
  00:00:03.5546490
  效率比1.350883
  =============================

21/212>
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号