oracle常用hint添加
1.视图添加索引
SELECT /*+index(VIEW_NAME.TABLE01_NAME INDEX01_NAME)
index(VIEW_NAME.TABLE01_NAME INDEX01_NAME)
index(VIEW_NAME.TABLE02_NAME INDEX01_NAME)
index(VIEW_NAME.TABLE03_NAME INDEX01_NAME)
index(VIEW_NAME.TABLE04_NAME INDEX01_NAME)
*/
*
FROM VIEW_OWNER.VIEW
WHERE ADD_DATE > SYSDATE - 1;
2.多个索引添加hint
SELECT /*+index(a INDEX_01) index(a INDEX02)*/
COUNT (*)
FROM TABLE_OWNER.TABLE_NAME a
WHERE
CONDITION01 AND CONDITION02;
3.添加cursor_sharing hint
SELECT /*+ CURSOR_SHARING_EXACT */
*
FROM TABLE_OWNER.TABLE_NAME A
WHERE DECODE (TO_NUMBER (PROPERTY_01), 0, 0) = 0;
4.index range scan hint
SELECT /*+ INDEX_ASC(testtable IX_TESTTABLE_ID) */ count(1) FROM testtable where id=2;
5.禁用动态采样hint
select /*+dynamic_sampling(dysam 0)*/* from dysam where id=10;
6.11g优化器hint
SELECT /*+OPTIMIZER_FEATURES_ENABLE('11.2.0.4')*/A.ID
FROM MONKEY.TEST01 A,
MONKEY.TEST02 B,
MONKEY.TEST03 C
WHERE A.ID = B.ID
AND A.ID = C.ID
AND A.TEL_NO = ENCRYPT_FN (:B1);
升级到19C之后,如上sql A.TEL_NO = ENCRYPT_FN (:B1)无法使用A表的TEL_NO索引,加上11G的hint即可。
7.表连接相关hint
SELECT /*+ USE_NL(e d) */ e.employee_id, e.first_name, d.department_name
FROM employees e
JOIN departments d ON e.department_id = d.department_id;
SELECT /*+ USE_HASH(e d) */ e.employee_id, e.first_name, d.department_name
FROM employees e
JOIN departments d ON e.department_id = d.department_id;
SELECT /*+ USE_MERGE(e d) */ e.employee_id, e.first_name, d.department_name
FROM employees e
JOIN departments d ON e.department_id = d.department_id;
SELECT /*+ LEADING(e) */ e.employee_id, e.first_name, d.department_name
FROM employees e
JOIN departments d ON e.department_id = d.department_id;
SELECT /*+ ORDERED */ e.employee_id, e.first_name, d.department_name
FROM employees e
JOIN departments d ON e.department_id = d.department_id;
分类:
oracle
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?