![]() |
1
1
因为您调用的是存储过程,而不是代码中的内联查询,所以SQL Server会将对存储过程的每次调用视为单独的调用,每次都会准备和取消准备存储过程。我不确定是否有办法解决这个问题。 如果存储过程中发生的任何事情都可以通过代码中的查询完成,那么您可以使用这样的结构,只在第一次准备SQL语句:
|
![]() |
2
0
思想。。。
|
![]() |
3
0
我认为其他答案可能有助于优化性能,尽管我认为您使用什么方法访问TClientDataSet并不重要,因为无论哪种方式,实际的数据库更新都是独立的(并且是自动生成的)。 如果更新作为每行的单独准备工作,那么Borland的设计选择似乎很糟糕,因为很明显,更新许多行将需要相同的查询,每次只使用不同的参数。 另一方面,TClientDataSet用于内存中的数据库,这意味着相对较小的数据库。使用大约一百万行可能超出了预期的用例。
|
![]() |
4
0
答案是在TADOConnection中使用的提供者中。从MSDASQL切换到SQLOLEDB,现在一切正常,没有任何其他查询。 |
![]() |
AndersJ · 如何自动删除尚未更新的客户端数据集记录 9 年前 |