【发布时间】:2020-04-26 22:14:16
【问题描述】:
我的查询的执行时间大约需要 27 分钟。我真的不知道为什么需要这么长时间。特别是我有另一个具有相同输出的查询,但这个只需要 1.4 秒。 我想知道这两个查询之间的平均差异是什么,以及为什么第一个查询需要这么长时间才能执行。
第一个,大约需要 27 分钟:
select ATTACHMENT_ID from PES_ESB_ATTACHMENT where ATTACHMENT_ID in(
select distinct ATTACHMENT_ID from PES_ESB_ATTACHMENT A
left outer join PES_ESB_SHIFTDOCUMENTATION SD on A.MOMENT=SD.ATTACHMENT_MOMENT
left outer join PES_ESB_SHIFTTASK T on A.MOMENT=T.ATTACHMENT_MOMENT
where
SD.ATTACHMENT_MOMENT is null
and
T.ATTACHMENT_MOMENT is null
And ( 163697831 - A.MOMENT ) > 86400
)
第二个有 1.4 秒:
select ATTACHMENT_ID from PES_ESB_ATTACHMENT where ATTACHMENT_ID in(
select ATTACHMENT_ID from (
select distinct ATTACHMENT_ID, A.MOMENT
from PES_ESB_ATTACHMENT A
left outer join PES_ESB_SHIFTDOCUMENTATION SD on A.MOMENT=SD.ATTACHMENT_MOMENT
left outer join PES_ESB_SHIFTTASK T on A.MOMENT=T.ATTACHMENT_MOMENT
where
SD.ATTACHMENT_MOMENT is null
and
T.ATTACHMENT_MOMENT is null
)tbl1
)
and
( 163697831 - MOMENT ) > 86400
怎么会有这么大的差距?
【问题讨论】:
-
但是两个查询的连接是一样的
-
一般来说,拥有查询计划、表/索引结构以及在某些情况下为所有引用表提供 optdiag 输出会有所帮助;实际查询运行的性能指标(通过 MDA 表和/或
set statistics io,time on也可以提供帮助);当然,我们现在谈论的是一项对于这种交换媒介来说可能“太大”的事业;另一种选择是尽可能简单地解释查询试图完成什么,例如,在其他 2x 表中找到没有匹配项的 PES_ESB_ATTACHMENT/ATTACHMENT_IDs -
我之前的评论假设这是 Sybase ASE; Sybase 有 4 种不同的 RDBM 产品(ASE、SQLAnywhere、IQ、Advantage),因此了解您使用的 Sybase 产品以及版本也会有所帮助
标签: sql database performance sybase