gpt4 book ai didi

sql-server - 打开 ADOQuery 时是否可以显示它的记录?

转载 作者:行者123 更新时间:2023-12-03 15:02:36 26 4
gpt4 key购买 nike

我有一个通过数据源链接到 DBGrid 的 ADOQuery。
ADOQuery 和DataSource 位于DataModule 中,并且连接采用另一种形式。

有什么方法可以让我的应用程序在查询获取记录时显示行吗?
就像 MSSQL Management Studio。

select 大约需要 7 分钟才能终止执行。

我使用的是 Delphi 2007。

最佳答案

艰巨的挑战。如果我需要进行大量查询,我通常会将查询分成多个 block 。然后,我创建一个采用参数 @ChunkNumber、@ChunkSize 和 @TotalChunks 的存储过程。因此,您只需对从 (@ChunkNumber-1)@ChunkSize+ 1 到 @ChunkNumber@ChunkSize 的记录运行查询。在您的 Delphi 代码中,只需运行如下循环(PSeudo 代码):

for(Chunk = 1 to TotalChunks)
{
DataTableResults = sp_SomePrecedure @ChunkNumber = @Chunk,
@ChunkSize = ChunkSize
RenderTableToClient(DataTableResults)
}

这样,假设您有 10,000 条记录, block 大小为 100。因此您将有 100 个 SP 调用。因此,您可以渲染从 SP 接收到的每个 block ,以便用户能够看到表更新。

限制是运行的查询是否需要首先运行一次命中的所有记录。例如。分组依据。 SQL Server 使用 OFFSET,因此您可以组合起来获得有用的东西。

我有一些查询运行大约 800K 记录,运行大约需要 10 分钟。但我所做的是将源表分块,然后运行查询,例如如果一个表 users 有 1M 条记录,并且您想要返回一个显示每小时访问的总页数的查询,您可以将用户分块并仅对每个 block 运行查询。

抱歉,我没有具体的代码示例,但希望这个建议能引导您朝积极的方向发展。

关于sql-server - 打开 ADOQuery 时是否可以显示它的记录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36601809/

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