我有一个简单的Windows Forms应用程序,它被编写为C#4.0。该应用程序显示数据库中的一些记录。该应用程序具有由用户启动的查询选项。Windows窗体应用程序的中间层缓存
在数据库中的记录,我们可以称之为乔布斯 考虑两列作业ID和状态
这是由两个后台服务更新,这就像一个生产者消费者服务的工作其实。作业的状态将由后面的这些服务更新。
现在,对于可以从数据库中查询记录的选项的用户来说,例如,根据状态查询数据(提交,处理,完成)。这可能会导致数千条记录,并且GUI可能会在显示大量数据时遇到一些性能故障。
因此,将查询结果的块显示为页面很重要。在用户手动刷新或进行新查询之前,GUI不会刷新。
对于例如由于工作不断从服务中更新,工作状态在任何时间点都可能不同。页面在从数据库中获取数据时的基本要求。
我正在使用LINQ to SQL从数据库中获取数据。它使用起来非常简单,但没有必要满足这种需求的中级缓存。如果记录数量非常高,使用进程内存来缓存结果可以将页面内存激增至极限。不幸的是,LINQ不提供任何中间层缓存设施与DataContext对象。
用C#4.0 + SQL Server + Windows环境实现分页机制的最佳方式是什么?
一些替代方案我觉得有一个可以临时存储结果作为缓存的复制表/ DB。或者使用进取的应用程序库的应用程序缓存块。我相信这是大多数开发人员面临的典型问题。这是解决这个问题的最有效的方法。 (注意:我的应用程序和数据库在同一个机器上运行)
感谢您的回答,我是这个新手。你能帮助一些链接上的优化表和索引分页? – sarat 2012-07-27 06:17:41
创建索引的规范是[here](http://msdn.microsoft.com/en-us/library/ms188783.aspx),但我建议您做一些网络搜索:[SQL Server索引](https ://www.google.com/search q = SQL +服务器+索引)。 – eulerfx 2012-07-27 14:58:18