关于SQL函数效率的一些测试与思考 | 郑州计算机学校_郑州电脑学校_郑州电脑培训

  在项目中我们经常能遇到数据库有“一对多”的关系,比如下面两张表:  Student:  Class:  Class-Student就这样构成了一个简单的一对多关系。当然在实际的项目中,也可以再建立一张Relation表来保存他们之间的关系,在这里为了简单,就不做Relation表了。  现在在项目中,我需要将Class表中的数据list显示,当然也想显示选择了这门课的Student的StuName。也可以说是将一对多关系转换为一对一关系。我所期望的显示格式是这样的:  要做到这一点并不难,大体有两种思路:  1、在数据库中写一个函数  2、在程序中获取表Class与表Student所有数据,然后对比ClassID  那么,那种方法效率比较高呢?于是我写了下面的代码来进行一个简单的测试View Code class Program { static void Main(string[] args) { Sql sql = new Sql(); Stopwatch time1 = new Stopwatch(); Stopwatch time2 = new Stopwatch(); for (int j = 0; j < 10; j++) { time2.Start(); for (int i = 0; i < 1000; i++) { string sql1 = “select ID,[StuName],[ClassID] FROM [Student]“; string sql2 = ” SELECT ID,ClassName from Class”; List<string> item = new List<string>(); string bl=”"; DataTable dt1 = sql.getData(sql1); DataTable dt2 = sql.getData(sql2); foreach (DataRow dtRow2 in dt2.Rows) { foreach (DataRow dtRow1 in dt1.Rows) { if (dtRow1["ClassID"].ToString() == dtRow2["ID"].ToString()) { bl+=dtRow1["StuName"].ToString()+”,”; } } item.Add(bl); bl = “”; } } time2.Stop(); Console.WriteLine(time2.Elapsed.ToString()); time1.Start(); for (int i = 0; i < 1000; i++) { string sql3 = “SELECT C.ID, C.ClassName, dbo.f_getStuNamesByClassID(C.ID)as stuName FROM Class C”; DataTable dt = sql.getData(sql3); } time1.Stop(); Console.WriteLine(time1.Elapsed.ToString()); float index = (float)time1.Elapsed.Ticks / (float)time2.Elapsed.Ticks; Console.WriteLine(“效率比” + index.ToString()); Console.WriteLine(“=============================”); } Console.ReadLine(); } }

该日志 2013年10月04日发表在网络安全技术分类下, 通告目前不可用,你可以至底部留下评论。
转载请注明: 关于SQL函数效率的一些测试与思考 | 郑州计算机学校_郑州电脑学校_郑州电脑培训