用EXPLAIN PLAN 分æž�SQLè¯?�¥:
EXPLAIN PLAN æ˜?¸€ä¸?¾ˆå¥½çš„分æž�SQLè¯?�¥çš„å·¥å…?它甚至å�¯ä»¥åœ¨ä¸�执行SQL的情况下分æž�è¯?�¥. 通过分æž�,我们就å�¯ä»¥çŸ¥é�“ORACLEæ˜??Žä¹ˆæ ·è¿žæŽ¥è¡¨,使用ä»?么方å¼�扫æ��表(索引æ‰?��或全表扫æ�?以å�Šä½¿ç”¨åˆ°çš„索引å��ç§°.
ä½ éœ€è¦�按照从里到å¤?从上到下的æ?åº�解读分æž�的结果.
EXPLAIN PLAN分æž�çš„ç»“æžœæ˜¯ç”¨ç¼©è¿›çš„æ ¼å¼�排列çš? æœ?内部的æ“�作将è¢?œ€å…ˆè§£è¯? 如果两个æ“�作处于å�Œä¸€å±‚ä¸,带有æœ?å°�æ“�作å�·çš„å°†è¢??先执è¡?
NESTED LOOPæ˜?°‘æ•°ä¸�按照上述规则处ç�†çš„æ“�ä½? æ£ç¡®çš„æ‰§è¡Œè·¯å¾„是æ£?查å?NESTED LOOPæ��供数æ�®çš„æ“�ä½?其䏿“�作å�·æœ€å°�的将è?æœ?å…ˆå?ç�?
使用TKPROF工具分æž�SQLè¯?�¥:
SQL trace 工具收集æ£åœ¨æ‰§è?çš„SQLçš„æ?§èƒ½çжæ?�æ•°æ�?¹¶è®°å½•到一ä¸?·Ÿè¸?–‡ä»¶ä¸. 这个跟踪文件æ��供了è?多有用的信æ�¯,例å?è§£æž�次数.执è?次数,CPU使用时间ç?这些数æ�®å°†å�¯ä»¥ç”¨æ�¥ä¼˜åŒ–ä½ çš„ç³»ç»?
设置SQL TRACE在会�级� 有效
ALTER SESSION SET SQL_TRACE TRUE
设置SQL TRACE 在整ä¸?•°æ�?º“有效, ä½ å¿…é¡»å°†SQL_TRACEå�‚数在init.oraä¸??为TRUE, USER_DUMP_DESTå�‚数说明了生æˆ�è·Ÿè¸?–‡ä»¶çš„ç›?½•
å†�使用TKPROF对TRACE文件进è?分æž�分æž�ç»“æžœæ›´åŠ å‡†ç¡®ã€�清æ¥?
在SQLPLUS �置AUTOTRACE:
SET AUTOTRACE OFF :ä¸�能获得AUTOTRACE报告. 这是默è?çš?
SET AUTOTRACE ON EXPLAIN :仅仅显示优化器执行è?划的AUTOTRACE报告
SET AUTOTRACE ON STATISTICS :仅仅显示SQLè¯?�¥æ‰§è?的统计结果的AUTOTRACE报告
SET AUTOTRACE ON :包括上é�¢ä¸¤é¡¹å†…å?çš„AUTOTRACE报告
SET AUTOTRACE TRACEONLY :与SET AUTOTRACE ON类似,æ‰?有的统è?和数æ�?ƒ½åœ?¼Œä½†ä¸�å�?»¥æ‰“å�°
SQL 调整的目æ ?
1)去掉ä¸�å¿…è?的大型表的全表扫æ��ã??
2)缓å˜å°�型表的全表扫æ��ã??
3ï¼‰æ ¡éªŒä¼˜åŒ–ç´¢å¼•çš„ä½¿ç”¨ã€?
4)æ?验优化的连接æŠ?æœ???
在è?计和å¼?å�‘时调整ï¼?/strong>
当è?è®¡ä½ çš„ç³»ç»Ÿæ—¶ï¼Œä½¿ç”¨ä¸‹åˆ—ä¼˜åŒ–æ?§èƒ½çš„准则:
- 消除客户机ï¼�æœ�务器应用ä¸ä¸�å¿…è¦�çš„ç½‘ç»œä¼ è¾“ï¼Œä½¿ç”¨å˜å‚¨è¿‡ç¨‹ã??
- 使用适å�ˆä½ 系统的Oracleæœ�务器é?‰ä»¶ï¼ˆä¾‹å¦‚,并è?查è?或分布å¼�æ•°æ�®åº“)ã€?
- 除é�žä½ 的应用有特殊的éœ?è¦�,å�¦åˆ™ä½¿ç”¨ç¼ºçœ�çš„Oracleé”�ã??
- 利用数æ�®åº“è?ä½�应用模å�—,以便能以æ¯�个模å�—为基ç¡?æ�¥è¿½è¸??§èƒ½ã€?
- é€‰æ‹©ä½ çš„æ•°æ�®å�—çš„æœ?佳大å°�ã??-- 原则上æ�¥è¯´å¤§ä¸?些的性能较好ã€?
- åˆ†å¸ƒä½ çš„æ•°æ�®ï¼Œä½¿å¾—一ä¸?Š‚ç‚¹ä½¿ç”¨çš„æ•°æ�®æœ?œ°å˜è´®åœ¨è?节点ä¸???