打开一个 TClientDataset,并获取包含 3 个 TBlob 字段的 10.000 行需要3 分钟。
打开完全相同的数据,但将 BLOB 字段转换为 Varchar,需要1 秒!
唯一的区别是,TQuery(或 TsqlQuery)有 TStringfields,而不是 TBlobfields。但数据是一样的。保存到文件的整个表大约为 3 MB。我使用 TsqlQuery 或 TQuery 连接到(火鸟)数据库得到了相同的结果。
该数据库位于运行 Firebird 2.1 的服务器上。在客户端上运行数据库时(两者都<1秒),差异消失了,所以我想它一定是网络流量的东西......
它变得更加奇怪:客户端数据集实际上是否填充了 BLOB 字段并不重要。所以,如果客户端数据集只有 1 个持久字段(数字整数),性能是一样的......
这个错误(?)对我来说是个大问题......我希望有人能解释一下......