【问题标题】:Initial select query returning result with delay in sybasesybase 中延迟的初始选择查询返回结果
【发布时间】:2016-01-07 03:36:43
【问题描述】:

我有一个在每个月末运行的存储过程,其中我们有非常简单的选择查询,但是当我调用这个 SP 时,检索数据会面临巨大的延迟。 当我从 Rapid SQL 客户端在本地进行测试时,我发现该查询的第一次/初始执行时它也会延迟返回结果,并且连续执行它会更快地返回结果。以下是我在 SP 中的查询。请帮忙。

SELECT COUNT(*)
FROM prechecks_data pd
INNER JOIN processing_queue tq on pd.key_id = tq.queue_id
WHERE tq.proc_status = 'PROC' AND pd.type_code = @type_id

只是为了让您知道 processing_queue 列的索引如下 集群的,唯一的,位于默认 queue_id 上

nonclustered 位于默认 proc_status 上

prechecks_data 表列不再被索引。

只是为了让您知道 processing_queue 表包含大约 20,000,000 或更多的数据。如果需要任何其他信息,请告诉我。

【问题讨论】:

  • 我的第一个问题是,如果您对 prechecks_data 进行查询,为什么没有索引?
  • prechecks_data 有多少行?

标签: sql select sybase


【解决方案1】:

这可能是因为prechecks 没有索引。如果您查看查询执行计划,它可能会显示预检查的表扫描。

如果您不熟悉执行计划,它会向您显示服务器在执行查询时消耗最多资源的位置。 Sybase 文档中的此链接显示了如何查看该计划。

Performance and Tuning: Using showplan:

【讨论】:

  • 嗨迈克尔,感谢您的回复。我可以在 prechecks_data 表上有索引。除此之外,我怀疑表 processing_queue 有大约 2MM 记录,甚至从 processing_queue 中执行 select count(*) 花费的时间太长,可以说大约几分钟。我需要修改表格或表格的任何其他部分吗?请帮忙。因为我是 java devlpr,所以我不太喜欢 DB。非常感谢您的帮助。表创建如下图...
猜你喜欢
  • 2018-12-31
  • 2017-07-19
  • 1970-01-01
  • 2019-03-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多