首页 > 代码库 > 构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(37)-文章发布系统④-百万级数据和千万级数据简单测试
构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(37)-文章发布系统④-百万级数据和千万级数据简单测试
我想测试EF在一百万条数据下的显示时间!这分数据应该有很多同学想要,看看EF的性能!
服务器
现在来向SQL2008R2插入1000000条数据吧
declare @i int;set @i=0;while @i<1000000beginINSERT 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;endselect COUNT(*) from dbo.MIS_Article
我发现我之前的理解是错的。不用存储过程,跟踪EF生成的LINQ成果是理想了,在Easyui下的分页显示也是2秒左右,如图的分页
在这里我只能把数据量加大到一千万,在EF中,我们可能无必要用存储过程来做列表的显示,因为生成的查询语句是非常理想的。
现在数据已经到达300W+了,查询分页的时间小于4秒
当数据达到六百万条记录的时候事件已经在6秒左右了,可能我的服务器处理能力有限。配置有点差
所以当你的数据到达一千万的时候,你需要更换更好的服务器,不能再纠结于存储过程,和程序的性能了,因为程序就TM的这样写了,还能怎么样!
大家可以转到http://www.woaitun.com/测试 帐号密码admin admin123,信息频道管理-------信息中心--------管理中心
但这里还是放出存储过程!效果却是一样的,有兴趣的可以了解一下这个分页存储过程
USE [AppDB]GO/****** Object: StoredProcedure [dbo].[P_MIS_Info_GetICanManage] Script Date: 06/16/2014 09:58:32 ******/SET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGOALTER proc [dbo].[P_MIS_Info_GetICanManage]@WhereSQL varchar(1024),@Rows int=15, --每页有几条@PageNo int=1,--页码@RowsCount int outasbeginCREATE 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)))+‘ )‘endprint @sqlexec (@sql)SELECT [Id] ,[ChannelId] ,[CategoryId] ,[Title] ,[ImgUrl] ,[BodyContent] ,[Sort] ,[Click] ,[CheckFlag] ,[Checker] ,[CheckDateTime] ,[Creater] ,[CreateTime] from #Art
数据查询数据:也许受到字段列个数,字段类型,服务器处理能力,在线人数等影响,但这里的数据足以说明查询百万级的数据已经问题不大。
在此说明一个问题,MVC+EF可以在很多中大型的系统中运用,而且变得越来越简单,让人能把关注点多放在业务方面!
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。