OracleË÷ÒýʹÓùæÔò
Ê×ÏÈ£¬ÎÒÃÇҪȷ¶¨Êý¾Ý¿âÔËÐÐÔÚºÎÖÖÓÅ»¯Ä£Ê½Ï£¬ÏàÓ¦µÄ²ÎÊýÊÇ£ºoptimizer_mode¡£¿ÉÔÚsvrmgrlÖÐÔËÐГshow parameter optimizer_mode"À´²é¿´¡£ORACLE V7ÒÔÀ´È±Ê¡µÄÉèÖÃÓ¦ÊÇ"choose"£¬¼´Èç¹û¶ÔÒÑ·ÖÎöµÄ±í²éѯµÄ»°Ñ¡ÔñCBO£¬·ñÔòÑ¡ÔñRBO¡£Èç¹û¸Ã²ÎÊýÉèΪ“rule”£¬Ôò²»ÂÛ±íÊÇ·ñ·ÖÎö¹ý£¬Ò»¸ÅÑ¡ÓÃRBO£¬³ý·ÇÔÚÓï¾äÖÐÓÃhintÇ¿ÖÆ¡£
¡¡¡¡Æä´Î£¬¼ì²é±»Ë÷ÒýµÄÁлò×éºÏË÷ÒýµÄÊ×ÁÐÊÇ·ñ³öÏÖÔÚPL/SQLÓï¾äµÄWHERE×Ó¾äÖУ¬ÕâÊǓִÐмƻ®”ÄÜÓõ½Ïà¹ØË÷ÒýµÄ±ØÒªÌõ¼þ¡£
¡¡¡¡µÚÈý£¬¿´²ÉÓÃÁËÄÄÖÖÀàÐ͵ÄÁ¬½Ó·½Ê½¡£ORACLEµÄ¹²ÓÐSort Merge Join£¨SMJ£©¡¢Hash Join£¨HJ£©ºÍNested Loop Join£¨NL£©¡£ÔÚÁ½ÕűíÁ¬½Ó£¬ÇÒÄÚ±íµÄÄ¿±êÁÐÉϽ¨ÓÐË÷Òýʱ£¬Ö»ÓÐNested Loop²ÅÄÜÓÐЧµØÀûÓõ½¸ÃË÷Òý¡£SMJ¼´Ê¹Ïà¹ØÁÐÉϽ¨ÓÐË÷Òý£¬×î¶àÖ»ÄÜÒòË÷ÒýµÄ´æÔÚ£¬±ÜÃâÊý¾ÝÅÅÐò¹ý³Ì¡£HJÓÉÓÚÐë×öHASHÔËË㣬Ë÷ÒýµÄ´æÔÚ¶ÔÊý¾Ý²éѯËٶȼ¸ºõûÓÐÓ°Ïì¡£
¡¡¡¡µÚËÄ£¬¿´Á¬½Ó˳ÐòÊÇ·ñÔÊÐíʹÓÃÏà¹ØË÷Òý¡£¼ÙÉè±íempµÄdeptnoÁÐÉÏÓÐË÷Òý£¬±ídeptµÄÁÐdeptnoÉÏÎÞË÷Òý£¬WHEREÓï¾äÓÐemp.deptno=dept.deptnoÌõ¼þ¡£ÔÚ×öNLÁ¬½Óʱ£¬emp×öΪÍâ±í£¬Ïȱ»·ÃÎÊ£¬ÓÉÓÚÁ¬½Ó»úÖÆÔÒò£¬Íâ±íµÄÊý¾Ý·ÃÎÊ·½Ê½ÊÇÈ«±íɨÃ裬emp.deptnoÉϵÄË÷ÒýÏÔÈ»ÊÇÓò»ÉÏ£¬×î¶àÔÚÆäÉÏ×öË÷ÒýȫɨÃè»òË÷Òý¿ìËÙȫɨÃè¡£
¡¡¡¡µÚÎ壬ÊÇ·ñÓõ½ÏµÍ³Êý¾Ý×Öµä±í»òÊÓͼ¡£ÓÉÓÚϵͳÊý¾Ý×Öµä±í¶¼Î´±»·ÖÎö¹ý£¬¿ÉÄܵ¼Ö¼«²îµÄ“Ö´Ðмƻ®”¡£µ«ÊDz»ÒªÉÃ×Ô¶ÔÊý¾Ý×Öµä±í×ö·ÖÎö£¬·ñÔò¿ÉÄܵ¼ÖÂËÀËø£¬»òϵͳÐÔÄÜϽµ¡£
¡¡¡¡µÚÁù£¬Ë÷ÒýÁÐÊÇ·ñº¯ÊýµÄ²ÎÊý¡£ÈçÊÇ£¬Ë÷ÒýÔÚ²éѯʱÓò»ÉÏ¡£
¡¡¡¡µÚÆß£¬ÊÇ·ñ´æÔÚDZÔÚµÄÊý¾ÝÀàÐÍת»»¡£È罫×Ö·ûÐÍÊý¾ÝÓëÊýÖµÐÍÊý¾Ý±È½Ï£¬ORACLE»á×Ô¶¯½«×Ö·ûÐÍÓÃto_number()º¯Êý½øÐÐת»»£¬´Ó¶øµ¼ÖµÚÁùÖÖÏÖÏóµÄ·¢Éú¡£
¡¡¡¡µÚ°Ë£¬ÊÇ·ñΪ±íºÍÏà¹ØµÄË÷ÒýËѼ¯×ã¹»µÄͳ¼ÆÊý¾Ý¡£¶ÔÊý¾Ý¾³£ÓÐÔö¡¢É¾¡¢¸ÄµÄ±í×îºÃ¶¨ÆÚ¶Ô±íºÍË÷Òý½øÐзÖÎö£¬¿ÉÓÃSQLÓï¾ä“analyze table xxxx compute statistics for all indexes;"¡£ORACLEÕÆÎÕÁ˳ä·Ö·´Ó³Êµ¼ÊµÄͳ¼ÆÊý¾Ý£¬²ÅÓпÉÄÜ×ö³öÕýÈ·µÄÑ¡Ôñ¡£
¡¡¡¡µÚ¾Å£¬Ë÷ÒýÁеÄÑ¡ÔñÐÔ²»¸ß¡£
¡¡¡¡ÎÒÃǼÙÉèµäÐÍÇé¿ö£¬Óбíemp£¬¹²ÓÐÒ»°ÙÍòÐÐÊý¾Ý£¬µ«ÆäÖеÄemp.deptnoÁУ¬Êý¾ÝÖ»ÓÐ4ÖÖ²»Í¬µÄÖµ£¬Èç10¡¢20¡¢30¡¢40¡£ËäÈ»empÊý¾ÝÐÐÓкܶ࣬ORACLEȱʡÈ϶¨±íÖÐÁеÄÖµÊÇÔÚËùÓÐÊý¾ÝÐоùÔÈ·Ö²¼µÄ£¬Ò²¾ÍÊÇ˵ÿÖÖdeptnoÖµ¸÷ÓÐ25ÍòÊý¾ÝÐÐÓëÖ®¶ÔÓ¦¡£¼ÙÉèSQLËÑË÷Ìõ¼þDEPTNO=10£¬ÀûÓÃdeptnoÁÐÉϵÄË÷Òý½øÐÐÊ
Ïà¹ØÎĵµ£º
oracle±í¿Õ¼ä²Ù×÷Ïê½â
1
2
3×÷Õߣº À´Ô´£º ¸üÐÂÈÕÆÚ£º2006-01-04
5
6
7½¨Á¢±í¿Õ¼ä
8
9CREATE TABLESPACE data01
10DATAFILE '/ora ......
extent--×îС¿Õ¼ä·ÖÅ䵥λ --tablespace management
block --×îСi/oµ¥Î» --segment management
create tablespace james
datafile '/export/home/oracle/oradata/james.dbf'
size 100M ¡¡¡¡¡¡¡¡¡¡¡¡--³õʼµÄÎļþ´óС¡¡
autoextend On¡¡¡¡¡¡¡¡ --×Ô¶¯Ôö³¤
next 10M¡ ......
ORACLEÖÐÊý¾Ý×ÖµäÊÓͼ·ÖΪ3´óÀà, ÓÃÇ°×ºÇø±ð£¬·Ö±ðΪ£ºUSER£¬ALL ºÍ DBA£¬Ðí¶àÊý¾Ý×ÖµäÊÓͼ°üº¬ÏàËÆµÄÐÅÏ¢¡£
USER_*:ÓйØÓû§ËùÓµÓеĶÔÏóÐÅÏ¢£¬¼´Óû§×Ô¼º´´½¨µÄ¶ÔÏóÐÅÏ¢
ALL_*£ºÓйØÓû§¿ÉÒÔ·ÃÎʵĶÔÏóµÄÐÅÏ¢£¬¼´Óû§×Ô¼º´´½¨µÄ¶ÔÏóµÄÐÅÏ¢¼ÓÉÏÆäËûÓû§´´½¨µÄ¶ÔÏ󵫸ÃÓû§ÓÐȨ·ÃÎʵÄÐÅÏ¢
DBA_* ......
/*sum()over()*/
--ĬÈϼÆËãËùÓÐÐеĺϼÆ
select t.empno,t.ename,t.sal,t.deptno,sum(t.sal)over()
from scott.emp t;
--partition by·Ö×éºÏ¼Æ
select t.empno,t.ename,t.sal,t.deptno,
sum(t.sal)over(partition by t.deptno)
from scott.emp t
order by t.deptno,t.sal;
......
oracle Êý¾Ý¿âÁ¬½Ó¾ÍÏñÄãÔÚ³ÌÐòÖн¨Á¢Ò»¸öµ½Êý¾Ý¿âµÄÁ¬½ÓÒ»Ñù¡£
Èç¹ûÊý¾Ý¿â²»ÔÚ±¾µØÖ÷»ú,±ØÐëÔÚ$ORACLE_HOME/network/admin/tnsnames.oraÖÐÅäÖÃÏàÓ¦µÄtns£¬È»ºó³ÌÐò²ÅÄÜͨ¹ýÅäÖúõÄtns·ÃÎÊÊý¾Ý¿â£¬µ«ÊÇjavaͨ¹ýthin·½Ê½·ÃÎÊoracleÀýÍ⣬¿ÉÒÔ²ÉÓÃÔÚ±¾µØÅäÖúõÄtns±ðÃû£¬Ò²¿ÉÒÔ²ÉÓÃtnsÈ«½âÎöÃû£¬²ÉÓñðÃûµÈºÅºóµÄÈ« ......