发送精确的时间估计为用户在查询和导出报告

问题描述 投票:1回答:1

我有一个出口报告,excel文件的要求。该报告将包含的行数量巨大(100K甚至280K行)。它需要发送电子邮件至与估计的时间用户查询数据库,获取数据,并将其导出到Excel文件知道多久,他/她会等待,直到他/她收到带有下载链接的电子邮件。 我所做的是以下几点:

  1. 执行查询和数据库(使用Oracle.DataAccess.Client)所请求的过滤器,但与Count(*)来检索要生成行的总数。
  2. 乘这个数字具有恒定(我得到不断的使用System.Diagnostics.Stopwatch类来衡量在最坏的情况下经过的时间来获取x行数)

我知道这种做法是不实际的,因为在这种情况下,我不得不两次,每次报告执行相同的查询。 有没有更好的方法来实现这一目标,而无需执行两次相同的查询?

c# oracle
1个回答
1
投票

这可能不是100%准确。如果您正在执行每一次(具有参数)相同的查询,你可以看看在V $ SQLAREA视图的SQL所经过的时间。为了找到查询,执行是这样的:

select sql_text, sql_id from v$sqlarea where sql_text like '%foo%;

(替换从查询了一套独特的文本富)。

一旦你的SQL_ID,你可以得到的平均时间(毫秒)的SQL:

select  (ELAPSED_TIME/executions)/1000 from v$sqlarea
where sql_id = '5bmcms41p86gf'

你从以前查询获得的SQL_ID取代“5bmcms41p86gf”。请注意,在V $ SQLAREA记录可一定量的时间后丢弃。

© www.soinside.com 2019 - 2024. All rights reserved.