[英]SQl performance with subquery and literal expression in Oracle
我在以下场景中遇到了一些性能问题,想从性能角度询问可能是什么问题,因为我认为查询应该运行 cca。 同时。
想象以下 2 个查询,查询实际上要长得多,但为了简单起见,我减少了它们
select * from table where x = 2010;
select * from table where x = (select year from yearTable where ID=1234);
X 列上有一个索引,子查询给出了 2010 年的确切年份,但与第一个带有文字(几秒)的查询相比,该查询永远运行
从技术角度来看,它们之间应该没有太大区别。 当然必须评估子查询,但这是以毫秒为单位的,因为 ID 上也有一个索引。
我发现这个问题,文字与子查询,在数据库中与严重的 SQL 语句作斗争。
可能是什么问题呢?
谢谢
对于第二个查询:
SELECT *
FROM table
WHERE x = (SELECT year FROM yearTable WHERE ID = 1234);
您实际上想要索引子查询中涉及的表以进行快速查找:
CREATE INDEX idx1 ON yearTable (ID, year);
假设 Oracle 会选择扫描此表,那么在外部查询中将x
上的索引添加到表中可能不会有太大作用。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.