OracleË÷Òý±Ê¼Ç
Ò».B-TreeË÷Òý(b-tree index)
1. Ñ¡ÏîÔñË÷Òý×ֶεÄÔÔò:
ÔÚWHERE×Ó¾äÖÐ×îÆµ·±Ê¹ÓõÄ×Ö¶Î
Áª½ÓÓï¾äÖеÄÁª½Ó×Ö¶Î
Ñ¡Ôñ¸ßÑ¡ÔñÐÔµÄ×Ö¶Î(Èç¹ûºÜÉÙµÄ×Ö¶ÎÓµÓÐÏàֵͬ,¼´Óкܶà¶ÀÌØÖµ,ÔòÑ¡ÔñÐԺܺÃ)
ORACLEÔÚUNIQUEºÍÖ÷¼ü×Ö¶ÎÉÏ×Ô¶¯½¨Á¢Ë÷Òý
ÔÚÑ¡ÔñÐԺܲîµÄ×Ö¶ÎÉϽ¨Ë÷ÒýÖ»ÓÐÔÚÕâ¸ö×ֶεÄÖµ·Ö²¼·Ç³£ÇãбµÄÇé¿öÏÂϲÅÓÐÒæ(ÔÚÕâÖÖÇé¿öÏÂ,ijһ,Á½¸ö×Ö¶ÎÖµ±ÈÆäËü×ÖÖµÉÙ³öÏֺܶà)
²»ÒªÔÚºÜÉÙ¶ÀÌØÖµµÄ×Ö¶ÎÉϽ¨B-TREEË÷Òý,ÔÚÕâÖÖÇé¿öÏÂ,Äã¿ÉÒÔ¿¼ÂÇÔÚÕâЩ×Ö¶ÎÉϽ¨Î»Í¼Ë÷Òý.ÔÚÁª»úÊÂÎñ´¦Àí»·¾³ÏÂ,ËùÓɲ¢·¢ÐԷdz£¸ß,Ë÷Òý¾³£±»ÐÞ¸Ä,ËùÒÔ²»Ó¦¸Ã½¨Î»Í¼Ë÷Òý
²»ÒªÔÚ¾³£±»Ð޸ĵÄ×Ö¶ÎÉϽ¨Ë÷Òý.µ±ÓÐUPDATE,DELETE,INSETT²Ù×÷ʱ,ORACLE³ýÁËÒª¸üбíµÄÊý¾ÝÍâ,ͬʱҲҪ¸üÐÂË÷Òý,¶øÇÒ¾ÍÏó¸üÐÂÊý¾ÝÒ»Ñù,»ò²úÉú»¹ÔºÍÖØ×öÌõÄ¿
²»ÒªÔÚÓÐÓõ½º¯ÊýµÄ×Ö¶ÎÉϽ¨Ë÷Òý,ORACLEÔÚÕâÖÖÇé¿ö,ÓÅ»¯Æ÷²»»áÓõ½Ë÷Òý,³ý·ÇÄ㽨Á¢º¯ÊýË÷Òý
¿ÉÒÔ¿¼ÂÇÔÚÍâ¼ü×Ö¶ÎÉϽ¨Ë÷Òý,ÕâЩË÷ÒýÔÊÐíµ±ÔÚÖ÷±íÉÏUPDATE,DELETE²Ù×÷ʱ,²»ÐèÒª¹²Ïí×Ó±íµÄËø,Õâ·Ç³£ÊÊÓÃÓÚÔÚ¸¸±íºÍ×Ó±íÉÏÓкܶಢ·¢µÄINSERT,UPDATEºÍDELETE²Ù×÷µÄÇé¿ö
µ±½¨Á¢Ë÷Òýºó,Çë±È½ÏÒ»ÏÂË÷ÒýºóËù»ñµÃµÄ²éѯÐÔÄܵÄÌá¸ßºÍUPDATE,DELETE,INSERT²Ù×÷ÐÔÄÜÉϵÄËðʧ,±È½ÏµÃʧºó,ÔÙ×îºó¾ö¶¨ÊÇ·ñÐ轨Á¢Õâ¸öË÷Òý
2. Ñ¡Ôñ½¨Á¢¸´ºÏË÷Òý(composite index)
¸´ºÏË÷ÒýµÄÓŵã:
¸ÄÉÆÑ¡ÔñÐÔ:¸´ºÏË÷Òý±Èµ¥¸ö×ֶεÄË÷Òý¸ü¾ßÑ¡ÔñÐÔ
¼õÉÙI/O:Èç¹ûÒª²éѯµÄ×ֶθպÃÈ«²¿°üº¬ÔÚ¸´ºÏË÷ÒýµÄ×Ö¶ÎÀï,ÔòORACLEÖ»Ðë·ÃÎÊË÷Òý,ÎÞÐë·ÃÎʱí
ʲôÇé¿öÏÂÓÅ»¯Æ÷»áÓõ½¸´ºÏË÷ÒýÄØ?
(a)µ±SQLÓï¾äµÄWHERE×Ó¾äÖÐÓÐÓõ½¸´ºÏË÷ÒýµÄÁìµ¼×Ö¶Îʱ,ORACLEÓÅ»¯Æ÷»á¿¼ÂÇÓõ½¸´ºÏË÷ÒýÀ´·ÃÎÊ.
(b)µ±Ä³¼¸¸ö×Ö¶ÎÔÚSQLÓï¾äµÄWHERE×Ó¾äÖо³£Í¨¹ýAND²Ù×÷·ûÁªºÏÔÚһЩʹÓÃ×÷Ϊ¹ýÂËν´Ê,²¢ÇÒÕ⼸¸ö×ֶκÏÔÚÒ»ÆðʱѡÔñÐԱȸ÷×Ôµ¥¸ö×ֶεÄÑ¡ÔñÐÔÒª¸üºÃʱ,¿ÉÄÜ¿¼ÂÇÓÃÕ⼸¸ö×Ö¶ÎÀ´½¨Á¢¸´ºÏË÷Òý.
(c)µ±Óм¸¸ö²éѯÓï¾ä¶¼ÊDzéѯͬÑùµÄ¼¸¸ö×Ö¶Îֵʱ,Ôò¿ÉÒÔ¿¼ÂÇÔÚÕ⼸¸ö×Ö¶ÎÉϽ¨Á¢¸´ºÏË÷Òý.
¸´ºÏË÷Òý×Ö¶ÎÅÅÐòµÄÔÔò:
È·±£ÔÚWHERE×Ó¾äÖÐʹÓõ½µÄ×Ö¶ÎÊǸ´ºÏË÷ÒýµÄÁìµ¼×Ö¶Î
Èç¹ûij¸ö×Ö¶ÎÔÚWHERE×Ó¾äÖÐ×îÆµ·±Ê¹ÓÃ,ÔòÔÚ½¨Á¢¸´ºÏË÷Òýʱ,¿¼ÂǰÑÕâ¸ö×Ö¶ÎÅÅÔÚµÚһλ(ÔÚCREATE INDEXÓï¾äÖÐ)
Èç¹ûËùÓеÄ×Ö¶ÎÔÚWHERE×Ó¾äÖÐʹÓÃÆµÂÊÏàͬ,Ôò½«×î¾ßÑ¡ÔñÐÔµÄ×Ö¶ÎÅÅÔÚ×îÇ°Ãæ,½«
Ïà¹ØÎĵµ£º
OracleÈëÃÅÊé¼®ÍÆ¼ö
Á´½Ó£ºhttp://www.eygle.com/archives/2006/08/oracle_fundbook_recommand.html
ºÜ¶àÅóÓÑÒªÎÒ°ïÃ¦ÍÆ¼öÒ»ÏÂOracleµÄÈëÃÅÊé¼®£¬Äܹ»Á˽âOracleµÄ»ù±¾¸ÅÄî¡¢»ù±¾ÖªÊ¶µÄÄÇÖÖ¡£
ÎÒ¾ÍÃâΪÆäÄÑ£¬ÍƼö¼¸±¾¡£
Ê×ÏÈÎÒÏëÇ¿µ÷µÄÒ»µãÊÇ£¬ÈκÎÒ»±¾ÏµÍ³µÄOracleÊé¼®Ö»ÒªÈÏÕæ¶ÁÏÂÀ´£¬¶¼»áÓв»´íµÄÊÕ»ñ£¬¶ÁÊé×î¼É»äµÄ ......
create table emp2_log(
uname varchar2(20),
action varchar(10),
atime date
);
create or replace trigger trig
after insert or delete or update on emp2 for each row //°óÔÚÒ»ÕűíÉÏ,before after ¶¼¿É
ÒÔ,beforeÊÇ ²åÊý¾Ý֮ǰ£¬afterÊÇÖ®ºó
begin
&nb ......
(1)SEQNAME.NEXTVALÀïÃæµÄÖµÈçºÎ¶Á³öÀ´£¿¿ÉÒÔÖ±½ÓÔÚinsert into test values(SEQNAME.NEXTVAL) ÊÇ¿ÉÒÔÓà ÕâÑù£º
SELECT tmp#_seq.NEXTVAL
INTO id_temp
from DUAL; È»ºó¿ÉÒ ......
nvl( ) º¯Êý
ʾÀý Çë²ÎÔÄ
´ÓÁ½¸ö±í´ïʽ·µ»ØÒ»¸ö·Ç null Öµ¡£
Óï·¨
NVL(eExpression1, eExpression2)
²ÎÊý
eExpression1, eExpression2
Èç¹û eExpression1 µÄ¼ÆËã½á¹ûΪ null Öµ£¬Ôò NVL( ) ·µ»Ø eExpression2¡£Èç¹û eExpression1 µÄ¼ÆËã½á¹û²»ÊÇ null Öµ£¬Ôò·µ»Ø eExpression1¡£eExpression1 ºÍ eExpression2 ¿ÉÒÔ ......