我正在尝试使用索引来提高查询性能:
SELECT E.CLIENT, E.TITLE
FROM (SELECT D.CLIENT, D.TITLE, COUNT('X') TEMPORADAS
FROM (SELECT A.CLIENT, A.TITLE
FROM (SELECT CLIENT,TITLE,SEASON, COUNT('X') N_EPISODIOS
FROM LIC_SERIES GROUP BY CLIENT,TITLE,SEASON) A
JOIN SEASONS B ON (A.TITLE=B.TITLE AND A.SEASON=B.SEASON AND A.N_EPISODIOS=B.EPISODES)) D
GROUP BY D.CLIENT, D.TITLE) E
JOIN SERIES F ON (E.TITLE=F.TITLE AND E.TEMPORADAS=F.TOTAL_SEASONS)主要思想是创建两个索引,使用来自内部查询(最深连接)的ON子句中的值:
DROP INDEX INDEX_TAPS_MOVIES;
DROP INDEX INDEX_CASTS;
CREATE INDEX INDEX_TAPS_MOVIES
ON TAPS_MOVIES(TITLE);
CREATE INDEX INDEX_CONTRACTS
ON CASTS(TITLE);但是经过分析,在加载时间上没有任何改善。我试图强制使用提示,但我得到了最差的性能。在这些类型的查询中使用索引的关键是什么?应该是优化它的更好的方法而不是索引?
最亲切的问候
发布于 2017-05-07 11:40:17
Oracle优化器并不总是使用索引。它检查不同的执行计划,并选择最好的one.sometimes,不使用索引返回更好的性能。为了提高性能,您可以并行表(参见oracle中的parallelizem )。为了使表并行执行,使用以下代码: ALTER TABLES YourTableName PARALLEL 4;
或者你可以像下面这样使用提示: /*+ PARALLEL(4) */关于parallelizem的度数。
https://stackoverflow.com/questions/43826681
复制相似问题