我正在使用以下查询来获取 profile_run_key 的前两条记录。我正在使用三个几乎相似的查询来完成这项工作。这意味着我要为“where”子句遍历表三次。所以我认为这将需要 3(n) 时间来执行。或者,我可以使用“Order by”,但执行需要 nlogn 时间。
SELECT name, weighted_average
FROM idp_weighted_avg
where (profile_run_key =
(SELECT MAX (profile_run_key)
FROM idp_weighted_avg
WHERE SCORECARD_IDENTIFIER = 'U:D8yIYvW6EeGKyklcM7Co1A')
OR profile_run_key =
(SELECT MAX (profile_run_key)
FROM idp_weighted_avg
WHERE SCORECARD_IDENTIFIER = 'U:D8yIYvW6EeGKyklcM7Co1A'
AND profile_run_key <
(SELECT MAX (profile_run_key)
FROM idp_weighted_avg
WHERE SCORECARD_IDENTIFIER =
'U:D8yIYvW6EeGKyklcM7Co1A')))
我想知道是否可以重用(我不想创建临时表)以下子查询的结果?有什么选择吗?建议?
SELECT MAX (profile_run_key)
FROM idp_weighted_avg
WHERE SCORECARD_IDENTIFIER = 'U:D8yIYvW6EeGKyklcM7Co1A'