gpt4 book ai didi

performance - ClientDataset 性能 TBlobfields

转载 作者:行者123 更新时间:2023-12-03 18:33:11 27 4
gpt4 key购买 nike

打开一个 TClientDataset,并获取包含 3 个 TBlobfields 的 10.000 行需要 3分钟 .

打开完全相同的数据,但将 BLOB 字段转换为 Varchar,需要 1 秒 !

唯一的区别是,TQuery(或 TsqlQuery)具有 TStringfields,而不是 TBlobfields。但数据是一样的。保存到文件的整个表大约为 3 MB。
我使用 TsqlQuery 或 TQuery 连接到(firebird)数据库得到相同的结果。

数据库位于运行 Firebird 2.1 的服务器上。在客户端上运行数据库时,差异消失了(都 < 1 秒),所以我想它一定是与网络流量有关的......

它变得更加奇怪:
Clientdataset 是否实际填充了 BLOB 字段并不重要。
因此,如果 clientdataset 只有 1 个持久字段(数字整数),则性能相同...

这个错误(?)对我来说是个大问题......我希望有人能解释一下......

最佳答案

Firebird FAQ website 上查看这篇文章

简而言之,它说:

  • 如果您使用 BLOB 查询表而不实际读取 BLOB 数据(只是执行 SELECT *),最好将它们从列列表中删除,因为 BLOB 需要两次访问服务器(一次检索 BLOB ID,另一次检索数据) )。或者,您可以将 BLOB 转换为 varchar 以更快地获取一些数据:

  • select ..., cast(my_blob_field as varchar(2000))

    希望这可以帮助。

    关于performance - ClientDataset 性能 TBlobfields,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9753308/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com