是否有可以快速处理大型数据集的DBGrid组件?

时间:2008-10-14 11:33:46

标签: performance delphi dataset dbgrid

大型数据集,数百万条记录,需要特殊编程才能保持DBGrids的速度。

我想知道是否有任何现成的Delphi(DBGrids)组件会自动执行此操作?

EDIT例如:某些数据库具有获取第1条X记录(例如100条记录)等功能。当我通过滚动到达底部时,我想自动获取下一个100.相反,当我到达开头时,我想要获取前一个100.我知道我可以编程这个,但它确实可以将该功能传播到DBGrid控制DBGrid执行缓冲的位置。它将节省相当多的编程 - 您只需设置“缓冲区大小”即可。

5 个答案:

答案 0 :(得分:4)

你可能想看一下精彩的(免费,开源,双重许可,因为MPL 1.1和GPL因此可用于闭源应用程序)Virtual TreeView及其用户提供的后代(向下滚动页面找到那些。)

编辑以反映问题的编辑:Virtual TreeView不仅允许您处理数百万个节点而不将其保留在内存中,但实际上这是使用它的首选方式。您可以在需要时通过事件回调提供数据,并且可以告诉树缓存该数据(或不。)

哦,当然它还有一个网格/报告模式,它可以作为一个表(只需将GridExtensions属性设置为True。)

答案 1 :(得分:3)

我会看看Developer Express QuantumGrid Suite。 (@birger:你的答案更快;-))所以我不只是重复答案,一些阐述:

DevExpress Grid使用一个数据控制器,它有几种模式来控制绑定到网格的数据。其中一个正是您正在寻找的:

  

网格模式

     

使用网格模式时,只有固定的   加载了数据集记录的数量   进入记忆。因为只有一个限制   从中检索记录集   数据集,自动排序,过滤   和摘要计算被禁用   在网格模式下(必须控制   手动而不是)。默认情况下,这个   模式被禁用和   ExpressDataController加载所有   记录在数据集中。

它确实有一些缺点,看起来非常明显:如果你手头没有所有记录,就无法进行汇总,排序或过滤。

答案 2 :(得分:2)

NextGrid是Delphi的轻巧,快速和漂亮的网格

http://www.bergsoft.net/component/next-grid/features.htm

  

处理大量没有放松速度的细胞

     

NextGrid可以处理非常大的数量   不失速度的细胞速度   添加,修改和删除数据   不依赖于细胞的数量。   在NextGrid演示中,您可以看到速度有多快   NextGrid使用100,000行和10行   列= 1,000,000个单元格

答案 3 :(得分:2)

我认为DevExpress Quantumgrid支持这个非常好。

答案 4 :(得分:0)

抱歉,我刚刚看到你对Neftalí的评论

如果你每次要带100条记录,然后获取下一条100,这项工作与数据库访问组件有关,看看 devart 组件,它们提供直接访问组件到最常用的数据库,他们有你要问的功能和更多:

http://www.devart.com/products-vcl.html