ASP.NET MVC5+EF6+EasyUI 后台管理系统(37)-文章发布系统④-百万级数据和千万级数据简单测试

简介:

系列目录

我想测试EF在一百万条数据下的显示时间!这分数据应该有很多同学想要,看看EF的性能!

服务器

现在来向SQL2008R2插入1000000条数据吧

复制代码
declare @i int;
set @i=0;
while @i<1000000
begin
INSERT INTO [AppDB].[dbo].[MIS_Article]
           ([Id]
           ,[ChannelId]
           ,[CategoryId]
           ,[Title]
           ,[ImgUrl]
           ,[BodyContent]
           ,[Sort]
           ,[Click]
           ,[CheckFlag]
           ,[Checker]
           ,[CheckDateTime]
           ,[Creater]
           ,[CreateTime])
     VALUES
           (CONVERT(varchar,@i)
           ,0
           ,'001001'
           ,'这是第'+ CONVERT(varchar,@i)
           ,''
           ,'这是第'+ CONVERT(varchar,@i)+'条测试记录'
           ,0
           ,122
           ,1
           ,'admin'
           ,'2014-5-1'
           ,'admin'
           ,'2014-5-1')
   set @i = @i+1;
end

select COUNT(*) from dbo.MIS_Article
复制代码

我发现我之前的理解是错的。不用存储过程,跟踪EF生成的LINQ成果是理想了,在Easyui下的分页显示也是2秒左右,如图的分页

在这里我只能把数据量加大到一千万,在EF中,我们可能无必要用存储过程来做列表的显示,因为生成的查询语句是非常理想的。

现在数据已经到达300W+了,查询分页的时间小于4秒

当数据达到六百万条记录的时候事件已经在6秒左右了,可能我的服务器处理能力有限。配置有点差

所以当你的数据到达一千万的时候,你需要更换更好的服务器,不能再纠结于存储过程,和程序的性能了,因为程序就TM的这样写了,还能怎么样!

大家可以转到测试 帐号密码admin admin123,信息频道管理-------信息中心--------管理中心

但这里还是放出存储过程!效果却是一样的,有兴趣的可以了解一下这个分页存储过程

复制代码
USE [AppDB]
GO
/****** Object:  StoredProcedure [dbo].[P_MIS_Info_GetICanManage]    Script Date: 06/16/2014 09:58:32 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER proc [dbo].[P_MIS_Info_GetICanManage]
@WhereSQL varchar(1024),
@Rows int=15, --每页有几条
@PageNo int=1,--页码
@RowsCount int out
as
begin

CREATE TABLE #Art(
        [Id] [varchar](50) NOT NULL,
    [ChannelId] [int] NOT NULL,
    [CategoryId] [varchar](50) NOT NULL,
    [Title] [varchar](100) NOT NULL,
    [ImgUrl] [varchar](255) NULL,
    [BodyContent] [varchar](8000) NULL,
    [Sort] [int] NULL,
    [Click] [int] NULL,
    [CheckFlag] [int] NOT NULL,
    [Checker] [varchar](50) NULL,
    [CheckDateTime] [datetime] NULL,
    [Creater] [varchar](50) NULL,
    [CreateTime] [datetime] NULL,
)


--获取总记录数
Create table #CountTable
(
    Id varchar(50)
)
exec('insert into #CountTable select distinct b.Id from  MIS_Article as b where 1=1 '+@WhereSQL+' ')
select @RowsCount=COUNT(*) from #CountTable


--获取管理的帖子
declare @sql varchar(1024)
set @sql ='insert into #Art select top ('+CONVERT(varchar,@Rows)+') [Id]
           ,[ChannelId]
           ,[CategoryId]
           ,[Title]
           ,[ImgUrl]
           ,[BodyContent]
           ,[Sort]
           ,[Click]
           ,[CheckFlag]
           ,[Checker]
           ,[CheckDateTime]
           ,[Creater]
           ,[CreateTime] from MIS_Article where Id in( '
+' select b.Id from( select distinct b.Id,row_number() over (order by b.CreateTime desc) as [row_number] from '
+' MIS_Article as b where 1=1 '+@WhereSQL+') as b where '
+' b.[row_number] >'+CONVERT(varchar,(@Rows*(@PageNo-1)))+' )'


end
print @sql
exec (@sql)

SELECT [Id]
           ,[ChannelId]
           ,[CategoryId]
           ,[Title]
           ,[ImgUrl]
           ,[BodyContent]
           ,[Sort]
           ,[Click]
           ,[CheckFlag]
           ,[Checker]
           ,[CheckDateTime]
           ,[Creater]
           ,[CreateTime] from #Art
    
    
复制代码

数据查询数据:也许受到字段列个数,字段类型,服务器处理能力,在线人数等影响,但这里的数据足以说明查询百万级的数据已经问题不大。

在此说明一个问题,MVC+EF可以在很多中大型的系统中运用,而且变得越来越简单,让人能把关注点多放在业务方面!

 本文转自ymnets博客园博客,原文链接:http://www.cnblogs.com/ymnets/p/3790374.html,如需转载请自行联系原作者

相关文章
|
4月前
|
SQL XML 关系型数据库
入门指南:利用NHibernate简化.NET应用程序的数据访问
【10月更文挑战第13天】NHibernate是一个面向.NET的开源对象关系映射(ORM)工具,它提供了从数据库表到应用程序中的对象之间的映射。通过使用NHibernate,开发者可以专注于业务逻辑和领域模型的设计,而无需直接编写复杂的SQL语句来处理数据持久化问题。NHibernate支持多种数据库,并且具有高度的灵活性和可扩展性。
70 2
|
4月前
|
前端开发 Java 数据库
springBoot:template engine&自定义一个mvc&后端给前端传数据&增删改查 (三)
本文介绍了如何自定义一个 MVC 框架,包括后端向前端传递数据、前后端代理配置、实现增删改查功能以及分页查询。详细展示了代码示例,从配置文件到控制器、服务层和数据访问层的实现,帮助开发者快速理解和应用。
|
6月前
|
开发框架 .NET 数据库连接
闲话 Asp.Net Core 数据校验(三)EF Core 集成 FluentValidation 校验数据例子
闲话 Asp.Net Core 数据校验(三)EF Core 集成 FluentValidation 校验数据例子
114 1
|
6月前
|
JSON 前端开发 Java
Spring MVC返回JSON数据
综上所述,Spring MVC提供了灵活、强大的方式来支持返回JSON数据,从直接使用 `@ResponseBody`及 `@RestController`注解,到通过配置消息转换器和异常处理器,开发人员可以根据具体需求选择合适的实现方式。
213 4
|
7月前
|
开发框架 JSON 前端开发
利用查询条件对象,在Asp.net Web API中实现对业务数据的分页查询处理
利用查询条件对象,在Asp.net Web API中实现对业务数据的分页查询处理
|
6月前
|
开发框架 前端开发 算法
分享 .NET EF6 查询并返回树形结构数据的 2 个思路和具体实现方法
分享 .NET EF6 查询并返回树形结构数据的 2 个思路和具体实现方法
110 0
|
7月前
|
前端开发 Java Spring
Spring MVC中使用ModelAndView传递数据
Spring MVC中使用ModelAndView传递数据
|
1月前
|
数据可视化 前端开发 测试技术
接口测试新选择:Postman替代方案全解析
在软件开发中,接口测试工具至关重要。Postman长期占据主导地位,但随着国产工具的崛起,越来越多开发者转向更适合中国市场的替代方案——Apifox。它不仅支持中英文切换、完全免费不限人数,还具备强大的可视化操作、自动生成文档和API调试功能,极大简化了开发流程。
|
4天前
|
JSON 前端开发 测试技术
大前端之前端开发接口测试工具postman的使用方法-简单get接口请求测试的使用方法-简单教学一看就会-以实际例子来说明-优雅草卓伊凡
大前端之前端开发接口测试工具postman的使用方法-简单get接口请求测试的使用方法-简单教学一看就会-以实际例子来说明-优雅草卓伊凡
43 10
大前端之前端开发接口测试工具postman的使用方法-简单get接口请求测试的使用方法-简单教学一看就会-以实际例子来说明-优雅草卓伊凡

热门文章

最新文章