Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/delphi/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Performance 是否有一个DBGrid组件可以快速处理大型数据集?_Performance_Delphi_Dataset_Dbgrid - Fatal编程技术网

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

Performance 是否有一个DBGrid组件可以快速处理大型数据集?,performance,delphi,dataset,dbgrid,Performance,Delphi,Dataset,Dbgrid,大型数据集、数百万条记录需要特殊编程来保持DBGrids中的速度 我想知道是否有任何现成的Delphi组件(DBGrids)可以自动执行此操作 编辑例如:某些数据库具有诸如获取第一个X记录(例如100条记录)等功能。当我滚动到底部时,我想自动获取下一个100。相反,当我到达起点时,我想取前100个。我知道我可以对其进行编程,但确实可以将该特性传播到DBGrid控件,在该控件中DBGrid进行缓冲。它将节省大量编程—您只需设置“缓冲区大小”就可以了。NextGrid是一款轻巧、快速、美观的Delp

大型数据集、数百万条记录需要特殊编程来保持DBGrids中的速度

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


编辑例如:某些数据库具有诸如获取第一个X记录(例如100条记录)等功能。当我滚动到底部时,我想自动获取下一个100。相反,当我到达起点时,我想取前100个。我知道我可以对其进行编程,但确实可以将该特性传播到DBGrid控件,在该控件中DBGrid进行缓冲。它将节省大量编程—您只需设置“缓冲区大小”就可以了。

NextGrid是一款轻巧、快速、美观的Delphi网格

处理大量单元时不放松速度

NextGrid可以处理非常大的数量 在不损失速度的情况下对细胞进行检测。速度 添加、修改和删除数据的功能 不取决于细胞的数量。 在NextGrid演示中,您可以看到速度有多快 下一个网格处理100000行和10 列=1000000个单元格


对不起,我刚刚看到你对Neftalí的评论

如果您希望每次携带100条记录,然后获取下一个100条记录,这项工作与数据库访问组件相关,请查看devart组件,它们为最常用的数据库提供直接访问组件,并且它们具有您要问的功能和更多功能:

我认为支持这一点的功能非常好。

我想看看。(@birger:你只是比我快了一点;-))所以我不是在重复答案,而是在阐述:

DevExpress网格使用具有多种模式的数据控制器来控制绑定到网格的数据。其中之一正是您要寻找的:

网格模式

使用栅格模式时,只有固定的 加载的数据集记录数 进入记忆。因为只有有限的 从数据库中检索记录集 数据集、自动排序、筛选 和摘要计算被禁用 在网格模式下(必须进行控制 改为手动)。默认情况下,此 模式被禁用,并且 ExpressDataController加载所有 数据集中的记录


它确实有一些缺点,这似乎很明显:如果手头没有所有记录,就无法进行摘要、排序或筛选。

您可能想看看精彩的(免费、开源、双许可MPL 1.1和GPL,因此可用于封闭源代码应用程序)及其用户提供的后代(向下滚动页面以查找这些内容。)

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


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

我希望DBGRid对这些信息进行缓冲处理,这很难通过谷歌获得。:)感谢您指出了DevExpress产品的缺点(无法过滤、排序和汇总),尤其是因为它比这里提到的替代品要贵得多。这个缺点一点也不明显——这些虚拟数据集的全部要点是繁重的工作是在服务器端完成的;控件仅操纵SQL以通过网络获取所需的数据。