【发布时间】:2018-10-14 11:48:02
【问题描述】:
select UPPER(x_col_name)
from xyz_table
where x_id = 2;
说上面查询的结果是 abc_column
WITH ref_data AS (
SELECT MIN(abc_column_date) ref_date
FROM abc_table
WHERE
abc_id = 6
) SELECT abc_column, abc_column_date - ref_date age
FROM abc_table, ref_data
WHERE abc_id = 6
第一个查询平均需要 0.27 秒,而最后一个查询需要 40 多秒,考虑到我不想使用索引,还有其他选择吗?
【问题讨论】:
-
样本数据和期望的结果以及对您想要做什么的解释会很有帮助。目前尚不清楚为什么您对
xyz_table的第一个查询与您对abc_table的第二个查询有任何关系。 -
基本上你问的问题是,“当我开车去商店时需要 15 分钟,但当我开车到城里时需要 30 分钟用我叔叔的车。为什么会这样?”简单地说,您为我们提供了几乎足够的信息来解释为什么这两个查询具有不同的经过时间。
-
@GordonLinoff,谢谢您的回复,我的第一个查询将返回一个列名,例如“xyz_value”,第二个查询使用此结果。具体来说:在 xyz_table 中,我有具有相同前缀的列(例如,xyz_value 和 xyz_date),第一个查询将返回我用来查找相关列的前缀,如 xyz_date 中一样。
标签: sql oracle performance