【Oracle】Oracle优化53个规则详解
Oracle优化通常指的是SQL优化和索引优化。以下是一些常见的优化策略和示例:
- 选择最有效的表连接顺序:
SELECT /*+ LEADING(a) USE_HASH(b c) */ ...
FROM a, b, c
WHERE ...
- 使用
/*+ ORDERED */
强制执行提示中的顺序:
SELECT /*+ ORDERED USE_HASH(b) */ ...
FROM a, b, c
WHERE ...
- 使用
/*+ USE_HASH(table_name) */
提示来指定散列连接:
SELECT /*+ USE_HASH(b) */ ...
FROM a, b, c
WHERE ...
- 使用
/*+ USE_MERGE(table_name) */
提示来指定合并连接:
SELECT /*+ USE_MERGE(a) */ ...
FROM a, b, c
WHERE ...
- 使用
/*+ DRIVING_SITE(table_name) */
提示将小表放在远程站点:
SELECT /*+ DRIVING_SITE(a) */ ...
FROM a@remote_site, b, c
WHERE ...
- 使用
/*+ APPEND */
提示在快速批量加载时避免日志记录:
INSERT /*+ APPEND */ INTO my_table ...
SELECT ...
- 使用
/*+ PARALLEL(table, degree) */
提示启用并行查询:
SELECT /*+ PARALLEL(a, 4) */ ...
FROM a, b, c
WHERE ...
- 使用
/*+ FULL(table_name) */
提示来指定全表扫描:
SELECT /*+ FULL(a) */ ...
FROM a, b, c
WHERE ...
- 使用
/*+ INDEX(table_name index_name) */
提示来强制使用索引:
SELECT /*+ INDEX(a a_idx) */ ...
FROM a, b, c
WHERE ...
- 使用
/*+ NO_INDEX(table_name index_name) */
提示来禁止使用索引:
SELECT /*+ NO_INDEX(a a_idx) */ ...
FROM a, b, c
WHERE ...
- 使用
/*+ DROP_INDEX(index_name) */
提示来删除不需要的索引:
SELECT /*+ DROP_INDEX(a_idx) */ ...
FROM a, b, c
WHERE ...
- 使用
/*+ ADD_INDEX(table_name, index_name) */
提示来添加缺失的索引:
SELECT /*+ ADD_INDEX(a, a_idx) */ ...
FROM a, b, c
WHERE ...
- 使用
/*+ STAR_TRANSFORMATION */
提示来启用星形转换:
SELECT /*+ STAR_TRANSFORMATION */ ...
FROM a, b, c
WHERE ...
- 使用
/*+ NO_STAR_TRANSFORMATION */
提示来禁止星形转换:
SELECT /*+ NO_STAR_TRANSFORMATION */ ...
FROM a, b, c
WHERE ...
- 使用
/*+ RULE */
提示来启用优化器规则:
SELECT /*+ RULE */ ...
FROM a, b, c
WHERE ...
- 使用
/*+ NO_RULE */
提示来禁用优化器规则:
SELECT /*+ NO_RULE */ ...
FROM a, b, c
WHERE ...
- 使用
/*+ DRIVING_SITE */
提示来指定驱动站点:
评论已关闭