我正在尝试使用索引来提高查询性能:
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)
主要思想是创建两个索引,其中包含来自内部查询(最深的JOIN)的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);
但是在分析结果之后,加载时间没有任何改善......我试图强制使用提示,但我的性能最差。在这些类型的查询中使用Index的关键是什么? 应该是优化它而不是索引的更好方法吗?
最基本的问候
答案 0 :(得分:0)
Oracle优化器并不总是使用索引。它检查不同的执行计划并选择最佳的一个。有时不使用索引返回更好的性能。 为了提高性能,你可以平行你的表(参见oracle中的parallelizem)。 使表格执行并行使用以下代码: ALTER TABLES YourTableName PARALLEL 4;
或者您可以使用以下提示: / * + PARALLEL(4)* / 关于parallelizem的学位。