SubSonic3.0插件分页查询速度测试
2013-08-16 12:56
357 查看
使用SubSonic3.0一段时间了,一直都想找机会测试一下各种查询分页速度,对比一下插件的查询效率到底怎么样,所以昨天写好了测试程序,准备好1K、1W、10W、50W和100W记录的数据表,早上详细做了测试。
本机硬件配置:
英特尔 第三代酷睿 i5-3470(3.2GHz 四核) 华硕 P8B75-V 8G金士顿DDR3 1600MHz内存 希捷 ST1000DM003-1CH162(1T / 7200转/分)
本机软件配置:
Win7 + SQL2005 + VS2010
测试方法:使用5种常用分页方式进行查询,查看第一页、中间页与最后页,然后记录查询消耗时间,每页查询10次后了平均值
存储过程分页程序用的是网上通用版本
测试代码:
Test.aspx页面
View Code
LoginLog表结构
LoginLog表内容(数据都是随机生成插入的)
测试结果(早上发的时候忘记前台排列的顺序了,重新修正为以下内容)
使用“SubSonic的T.GetPaged函数分页”查询是速度最快的,而“SubSonic.Query.Select查询分页”与“SubSonic的Skip和Take方法分页”的速度差不多,排在第二,由此可见SubSonic升级到3.0后,去除了一些不必要的代码瘦身后,执行效率也有了一定的提升
而在SubSonic插件中,使用率比较高的是SubSonic.Query.Select(可以封装成泛型调用),百万记录查询在0.6秒左右还是很不错的
另外附上以前弄过的SubSonic2.2测试结果,之前测试时代码没有很认真的写,测试时也比较随便,所以测出来数据不是非常确,不过2.2使用Query方式查询与SqlQuery查询的确在性能上有很大的区别
本文章为原创内容,转载请保留下面信息。
发表本编内容,只要主为了和大家共同学习共同进步,有兴趣的朋友可以加加Q群:SubSonic3.0学习群(327360708)或Email给我(1654937#qq.com),大家一起探讨,由于本人工作很繁忙,如果疑问请先留言,回复不及时也请谅解。
想了解更多SubSonic3.0的相关问题,请观注博客:http://www.cnblogs.com/EmptyFS/
本机硬件配置:
英特尔 第三代酷睿 i5-3470(3.2GHz 四核) 华硕 P8B75-V 8G金士顿DDR3 1600MHz内存 希捷 ST1000DM003-1CH162(1T / 7200转/分)
本机软件配置:
Win7 + SQL2005 + VS2010
测试方法:使用5种常用分页方式进行查询,查看第一页、中间页与最后页,然后记录查询消耗时间,每页查询10次后了平均值
存储过程分页程序用的是网上通用版本
测试代码:
Test.aspx页面
using System; using System.Diagnostics; using System.Linq; using Solution.DataAccess.DataModel; using Solution.DataAccess.DbHelper; namespace Solution.Web.WebManage { public partial class Test : System.Web.UI.Page { //第几页 int pageIndex = 1; //每页几条记录 int pageSize = 10; //总记录数 int total = 0; protected void Page_Load(object sender, EventArgs e) { //总记录数量 total = SqlHelper.ExecuteScalarToInt("select count(*) from LoginLog "); labTotle.Text = total.ToString(); //总页面数量 labPageSize.Text = total/pageSize + ""; } protected void Button1_Click(object sender, EventArgs e) { pageIndex = 1; Start(); } protected void Button2_Click(object sender, EventArgs e) { pageIndex = total / pageSize / 2; Start(); } protected void Button3_Click(object sender, EventArgs e) { pageIndex = total/pageSize; Start(); } private void Start() { /* * 方法一 ****************************************************************/ //使用GetPaged分页 var swatch = new Stopwatch(); swatch.Start(); var selectfun = new SelectFun(); var dt = LoginLog.GetPaged(pageIndex, pageSize); //统计结束 swatch.Stop(); labGetPaged.Text = (swatch.ElapsedMilliseconds / 1000.00).ToString(); /* * 方法二 ****************************************************************/ //使用SubSonic.Query.Select查询分页 swatch.Start(); var dt2 = selectfun.SelectDataTable<LoginLog>(false, 0, null, pageIndex, pageSize); //统计结束 swatch.Stop(); labQuery.Text = (swatch.ElapsedMilliseconds / 1000.00).ToString(); /* * 方法三 ****************************************************************/ //swatch = new Stopwatch(); swatch.Start(); var tem = LoginLog.All().Skip((pageIndex - 1) * 10).Take(pageSize); //统计结束 swatch.Stop(); labTime.Text = (swatch.ElapsedMilliseconds / 1000.00).ToString(); /* * 方法四 ****************************************************************/ //使用ADO.NET查询分页 //用于统计执行时长(耗时) //Stopwatch swatch = new Stopwatch(); swatch.Start(); int count = SqlHelper.ExecuteScalarToInt("select count(*) from LoginLog "); var dt3 = SqlHelper.GetPageTable(" * from LoginLog", "LoginLog", pageIndex, pageSize, count); //统计结束 swatch.Stop(); labADO.Text = (swatch.ElapsedMilliseconds / 1000.00).ToString(); /* * 方法五 ****************************************************************/ //使用存储过程分页 //Stopwatch swatch = new Stopwatch(); swatch.Start(); var dt4 = selectfun.SelectDataTable<LoginLog>("LoginLog_Id", false, null, pageIndex, pageSize); //统计结束 swatch.Stop(); labSql.Text = (swatch.ElapsedMilliseconds / 1000.00).ToString(); } } }
View Code
LoginLog表结构
LoginLog表内容(数据都是随机生成插入的)
测试结果(早上发的时候忘记前台排列的顺序了,重新修正为以下内容)
使用“SubSonic的T.GetPaged函数分页”查询是速度最快的,而“SubSonic.Query.Select查询分页”与“SubSonic的Skip和Take方法分页”的速度差不多,排在第二,由此可见SubSonic升级到3.0后,去除了一些不必要的代码瘦身后,执行效率也有了一定的提升
而在SubSonic插件中,使用率比较高的是SubSonic.Query.Select(可以封装成泛型调用),百万记录查询在0.6秒左右还是很不错的
另外附上以前弄过的SubSonic2.2测试结果,之前测试时代码没有很认真的写,测试时也比较随便,所以测出来数据不是非常确,不过2.2使用Query方式查询与SqlQuery查询的确在性能上有很大的区别
本文章为原创内容,转载请保留下面信息。
发表本编内容,只要主为了和大家共同学习共同进步,有兴趣的朋友可以加加Q群:SubSonic3.0学习群(327360708)或Email给我(1654937#qq.com),大家一起探讨,由于本人工作很繁忙,如果疑问请先留言,回复不及时也请谅解。
想了解更多SubSonic3.0的相关问题,请观注博客:http://www.cnblogs.com/EmptyFS/
相关文章推荐
- SubSonic3.0插件分页查询速度测试
- SubSonic3.0插件分页查询速度测试
- 关于SubSonic3.0插件使用SubSonic.Query.Select查询时,字段类型为tinyint时列丢失问题的Bug修复
- 关于SubSonic3.0插件使用SqlQuery或Select查询时产生的System.NullReferenceException异常修复
- 浅谈Django的Q查询以及AngularJS的Datatables分页插件
- 关于SubSonic3.0插件使用Json反序列化获得的实体进行更新操作时,只能执行添加而不能执行修改(编辑)操作的处理
- mysql数据库千万级别数据的查询优化和分页测试
- SqlServer2005 分页语句,自己简单测试了,感觉速度很快,就记录下来了,便于以后学习。
- hibernate底层的分页如何提高查询速度?
- Jquery插件实现分页查询
- jQuery插件select2利用ajax高效查询大数据列表(可搜索、可分页)
- 表主键排序和离散数据查询的速度测试
- SubSonic3.0使用存储过程查询时,不能使用output参数返回值的问题修改
- MSSQL分页:查询前几页速度最快的ROW_NUMBER() OVER分页存贮过程
- 为SubSonic3.0的查询(SubSonic.Query.Select和存储过程)添加更多的执行功能
- 表主键排序和离散数据查询的速度测试
- 解决Mybatis 分页插件pagehelper不支持逆向工程Example条件查询
- Subsonic 复杂查询(动态条件) 连表、分页
- Mybatis使用分页插件PageHelper做分页查询
- java分页条件查询-GridManager.js表格插件+Pageable分页对象+mybatis pagehelper分页插件