简单测试linq to sql性能
显示层的分页代码部分:
1 dataGridView.DataSource = data.Take(pagerControl1.PageSize * pagerControl1.PageIndex).Skip(pagerControl1.PageSize * (pagerControl1.PageIndex - 1)).ToList();,其中data是业务逻辑层获取到的数据,业务逻辑层:
2
3
4 var data = from d in jx.LogTable
5 orderby d.OperTime descending
6 where Tflag.Equals("全部") ||
7 ((d.OperTime >= t1 && d.OperTime <= t2) && (d.OperName.Contains(content) || d.UserID.Contains(content)))
8 select d;
9 List<LogTable> items = new List<LogTable>();
10 foreach (var d in data)
11 {
12 LogTable item = new LogTable();
13 item.编号 = trim(d.ID);
14 item.事件 = trim(d.OperName);
15 item.操作员 = trim(d.UserID);
16 item.标志 = trim(d.mark);
17 item.操作时间 = trim(d.OperTime);
18 items.Add(item);
19 }
20 return items;
之前一直在忙,没有时间去测试程序中所存在的问题以及如何能更高效的使用linq开发应用程序,今天挤出点时间来做了个小小的测试,这让我重新对linq产生了兴趣。
测试中的数据库表仍然不改变,还是操作日志表,不同的是我在该表中追加了更多的数据,总记录数几乎达到 110万条,然后对这110万条数据进行测试。具体测试如下:
当点击数据总条数时,弹出数据库操作日志表的总记录数,点击加载数据时,对110万条数据进行分页 , 每页10条,取第三页的10条数据,点清空数据时,对表格中加载的数据进行清空处理:

总条数如下:

首次运行,点击加载数据时,共耗时9100毫秒:
1 Stopwatch sw = new Stopwatch();
2 sw.Start(); //开始计时
3
4 var data = (from d in db.Log select d).ToList();//将数据全部查询出来,并且ToList()
5 dataGridView1.DataSource = data.Skip(20).Take(10).ToList();//分页
6
7 sw.Stop(); //计时结束
8 MessageBox.Show("共耗时:"+sw.ElapsedMilliseconds.ToString()+"毫秒");
9
然后我对代码做了改变,如下:
1 Stopwatch sw = new Stopwatch();
2 sw.Start(); //开始计时
3
4 var data = (from d in db.Log select d);//只是写好了查询条件,注意此处
5 dataGridView1.DataSource = data.Skip(20).Take(10).ToList();//分页
6
7 sw.Stop(); //计时结束
8 MessageBox.Show("共耗时:"+sw.ElapsedMilliseconds.ToString()+"毫秒");
首次点击加载数据时,共耗时185毫秒:
一定要注意:先分页在获取,而不是先获取再分页!
于是,为了测试效率,我将数据追加到了220万条,重新测试:

发现首次查询时,共耗时195毫秒:
清空后,再次查询,共耗时 37毫秒:
没文化真可怕,这么简单的知识竟然现在才知道!
我的网址是:http://www.yxxrui.cn
简单测试linq to sql性能的更多相关文章
- MVC 学习(二)之Linq to Sql 简单Demo
Linq to Entities 已经我的一篇博文中阐述了,这里阐述一下简单的Linq to Sql 的增删改查.Linq to sql 与Linq to Entities虽然同属于DataBase- ...
- .NET面试题系列[14] - LINQ to SQL与IQueryable
.NET面试题系列目录 名言警句 "理解IQueryable的最简单方式就是,把它看作一个查询,在执行的时候,将会生成结果序列." - Jon Skeet LINQ to Obje ...
- LINQ to Sql系列二 简单查询和联接查询
这一篇文章主要总结LINQ to sql的简单查询(单表查询)和联接查询(多表查询) 单表查询 需求是我们要输出TClass表中的结果.使用了from-in-select语句,代码如下: public ...
- Linq to SQL 简单的增删改操作
Linq to SQL 简单的增删改操作. 新建数据库表tbGuestBook.结构如下: 新建web项目,完成相应的dbml文件.留言页面布局如下 <body> <form id= ...
- Linq to SQL 简单增删改查
用Linq大大减少了对数据库的一般操作所需的编码量.运行下面事例之前,首先建一个叫做Alien的数据库表. CREATE TABLE [dbo].[Aliens]( [Id] [int] IDE ...
- linq to sql简单使用
1.新建一个winform项目. 2.添加一个Linq to Sql 类,命名为Northwind 3.打开服务器资源管理器,将表拖动到linq to sql 类,实体类就由Vs生成了 4.实例化Da ...
- LINQ之路10:LINQ to SQL 和 Entity Framework(下)
在本篇中,我们将接着上一篇“LINQ to SQL 和 Entity Framework(上)”的内容,继续使用LINQ to SQL和Entity Framework来实践“解释查询”,学习这些技术 ...
- LINQ to SQL 系列 如何使用LINQ to SQL插入、修改、删除数据
http://www.cnblogs.com/yukaizhao/archive/2010/05/13/linq_to_sql_1.html LINQ和 LINQ to SQL 都已经不是一个新事物了 ...
- 构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(37)-文章发布系统④-百万级数据和千万级数据简单测试
原文:构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(37)-文章发布系统④-百万级数据和千万级数据简单测试 系列目录 我想测试EF在一百万条数据下的显示时间! ...
随机推荐
- 【???】今天上午的考试题——区间dp和字符串/线性筛的综合应用
T3还没有打出来,就先放两道. ---------------------------------------------------------- T1:密码破译 温温手下的情报部门截获了一封加密信 ...
- 痞子衡嵌入式:一次利用IAR自带CRC完整性校验功能的实践(为KBOOT加BCA)
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家分享的是利用IAR自带CRC完整性校验功能的一次实践(为KBOOT加BCA). 痞子衡之前写过两篇关于IAR中自带CRC校验功能的文章 < ...
- FPGA 串口
VerilogHDL那些事儿_建模篇(黑金FPGA开发板配套教程) 作者:akuei2 说明:参照该书将部分程序验证学习一遍 学习时间:2014年5月3号 主要收获: 1. 对串口有初步了解: 2. ...
- 单体->集群->模块化->分布式微服务
开头语: 每篇一段开头语,在技术的道路中寻找文采的乐趣.(如果随笔中都是大白话勿喷,兄弟姐妹们) 单体项目 单体项目适用于小型开发,或自己来进行小项目的测试和使用. 单体项目的缺憾 多人开发项目所出现 ...
- argis android sdk配置备忘一下
ArcGIS RuntimeAndroid SDK100.1.0 1.在线配置(只有两处) 在project工程中的gradle添加 maven { url 'https://esri.bintray ...
- sitespeedio前端性能测试工具介绍
很久没有写博客了,今天给大家介绍一款比较好用的前端性能测试工具. sitespeedio简介: sitespeed.io是Jonathan Lee发布的一款可监视和衡量网站前端性能的开源工具. 1.开 ...
- moviepy音视频开发:音频剪辑基类AudioClip
☞ ░ 前往老猿Python博文目录 ░ 一.背景知识介绍 1.1.声音三要素: 音调:人耳对声音高低的感觉称为音调(也叫音频).音调主要与声波的频率有关.声波的频率高,则音调也高. 音量:也就是响度 ...
- PyQt(Python+Qt)学习随笔:Qt Designer中部件的windowIcon属性
windowIcon对象为部件对象的属性,但只有窗口对象有效,其他派生对象如pushButtong对象无效. 在windowIcon对象上有如下子属性设置: 这几个子属性实际上是QIcon类中继承的. ...
- PyQt(Python+Qt)学习随笔:部件的大小策略sizePolicy的含义
在Qt Designer中的每个部件,除了设置部件的位置(geometry)之外,还可以指定部件的大小策略sizePolicy.部件的sizePolicy用于说明部件在布局管理中的缩放方式,当部件没有 ...
- Python+Qt学习随笔:PyQt中常用的事件处理函数
在PyQt图形界面中,我们经常要捕获特定事件如鼠标按键按下.鼠标按下等事件以执行特定操作,可以通过重写组件对象的相关事件处理函数来实现相关处理,具体特定事件常用的包括如下: keyPressEvent ...