简单测试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毫秒:
没文化真可怕,这么简单的知识竟然现在才知道!
我的网址是: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在一百万条数据下的显示时间! ...
随机推荐
- uni-app p-table下时间转换的问题
问题描述: 从后台获取时间戳,转成日期格式,出现NaN的问题 uni的p-table插件 解决思路
- CentOS 7下使用systemctl为Nginx启用进程守护实现开机自启
1.cd到指定目录 cd /usr/lib/systemd/system 2.创建nginx.service vi nginx.service 3.输入以下内容,路径为nginx安装路径 [Unit] ...
- 大数据开发-Hive-常用日期函数&&日期连续题sql套路
前面是常用日期函数总结,后面是一道连续日期的sql题目及其解法套路. 1.当前日期和时间 select current_timestamp -- 2020-12-05 19:16:29.284 2.获 ...
- moviepy音视频剪辑VideoClip类fl_image方法及参数image_func的功能介绍
☞ ░ 前往老猿Python博文目录 ░ moviepy音视频剪辑模块的视频剪辑基类VideoClip的fl_image方法用于进行对剪辑帧数据进行变换. 调用语法:fl_image(self, im ...
- 第7.27节 Python案例详解: @property装饰器定义属性访问方法getter、setter、deleter
上节详细介绍了利用@property装饰器定义属性的语法,本节通过具体案例来进一步说明. 一. 案例说明 本节的案例是定义Rectangle(长方形)类,为了说明问题,除构造函数外,其他方法都只 ...
- IT人的5G网络架构视点:从网络架构演进的前世今生详解5G各NF网络功能体
一.引言 以前从来没关注电信无线上网网络的具体架构(也即PS域架构),现在开始学5G接触这些东西时,理解起来很痛苦,资料也少,于是一方面到处找人咨询,一方面到处查资料,最后发现应该从3G.4G时代的架 ...
- PyQt(Python+Qt)学习随笔:基于项的项部件(Item Widgets(Item-Based))概述
老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 Model/View架构中的视图部件是基于模型的项视图(Item Views(Model-Based ...
- python-字典dict、去除重复set
dict Python内置了字典:dict的支持,dict全称dictionary,在其他语言中也称为map,使用键-值(key-value)存储,具有极快的查找速度. 举个例子,假设要根据同学的名字 ...
- git .gitignore 忽略列表
#: 注释 # no .a files * .a //忽略以 .a结尾的 文件 # ... ! lib .a // 忽略 非 lib.a的文件 /TODO //忽略当前目录 文件名位 ...
- ios移动端 clipboard点击复制失效
在使用clipboard.min.js插件库实现复制,android下没有问题,ios下无效! 原因:ios默认非点击标签没有点击效果 解决方法:需要给非点击标签加事件,比如在span,div或者p标 ...