【发布时间】:2018-03-29 12:48:05
【问题描述】:
谁能想象一个简单的 SELECT 执行了 14 次,得到不同的执行时间?
我的 SQL 查询如下所示:
select count(*)
from myTable_1 x
left join myTable_2 y ON x.id = y.id
where y.id is null;
这 2 个表包含超过 1.500.000 条数据。通过 LEFT 加入他们,我应该得到更少。
第一次执行时,我在 40 秒后强制停止。 在第二次执行时,7 秒后我得到了一个结果集。 在第三次执行时,10 秒后我得到了相同的结果集。 在第 4 次执行时,我在 >600 秒后强制停止。 从第 4 次到第 19 次执行,我只是强制停止,因为它持续了超过 1 分钟,没有结果。
据我所知:只要查询完全执行(第二次执行),一些“数据”就会保存在高速缓存中。在下一次执行(第 3 次,第 4 次...)时,执行的持续时间必须
它有什么问题? 它在相同的环境中执行,将相同的数据放入表中。 我不再考虑硬件配置,因为它发生在同一个环境中。我没有看到“索引提示”的使用。我找不到关于这种不同执行时间的解释......
【问题讨论】:
-
可能该表正被用于其他目的,而您遇到了并发问题。
标签: sql oracle query-performance