´øÄãÇáËɽӴ¥OracleÖ´Ðмƻ®µÄÏà¹Ø¸ÅÄî
OracleÖ´Ðмƻ®µÄÏà¹Ø¸ÅÄ
rowid£ºÏµÍ³¸øoracleÊý¾ÝµÄÿÐи½¼ÓµÄÒ»¸öαÁУ¬°üº¬Êý¾Ý±íÃû³Æ£¬Êý¾Ý¿âid£¬´æ´¢Êý¾Ý¿âidÒÔ¼°Ò»¸öÁ÷Ë®ºÅµÈÐÅÏ¢£¬rowidÔÚÐеÄÉúÃüÖÜÆÚÄÚΨһ¡£
recursive sql£ºÎªÁËÖ´ÐÐÓû§Óï¾ä£¬ÏµÍ³¸½¼ÓÖ´ÐеĶîÍâ²Ù×÷Óï¾ä£¬Æ©Èç¶ÔÊý¾Ý×ÖµäµÄά»¤µÈ¡£
row source£¨ÐÐÔ´£©£ºoracleÖ´Ðв½Öè¹ý³ÌÖУ¬ÓÉÉÏÒ»¸ö²Ù×÷·µ»ØµÄ·ûºÏÌõ¼þµÄÐеļ¯ºÏ¡£
predicate£¨Î½´Ê£©£ºwhereºóµÄÏÞÖÆÌõ¼þ¡£
driving table£¨Çý¶¯±í£©£ºÓÖ³ÆÎªÁ¬½ÓµÄÍâ²ã±í£¬Ö÷ÒªÓÃÓÚǶÌ×ÓëhashÁ¬½ÓÖС£Ò»°ãÀ´ËµÊǽ«Ó¦ÓÃÏÞÖÆÌõ¼þºó£¬·µ»Ø½ÏÉÙÐÐÔ´µÄ±í×÷ΪÇý¶¯±í¡£ÔÚºóÃæµÄÃèÊöÖУ¬½«driving table³ÆÎªÁ¬½Ó²Ù×÷µÄrow source 1¡£
probed table£¨±»Ì½²é±í£©£ºÁ¬½ÓµÄÄÚ²ã±í£¬ÔÚÎÒÃÇ´Ódriving tableµÃµ½¾ßÌåµÄÒ»ÐÐÊý¾Ýºó£¬ÔÚprobed tableÖÐѰÕÒ·ûºÏÌõ¼þµÄÐУ¬ËùÒԸñíÓ¦¸ÃΪ½Ï´óµÄrow source£¬²¢ÇÒ¶ÔÓ¦Á¬½ÓÌõ¼þµÄÁÐÉÏÓ¦¸ÃÓÐË÷Òý¡£ÔÚºóÃæµÄÃèÊöÖУ¬Ò»°ã½«¸Ã±í³ÆÎªÁ¬½Ó²Ù×÷µÄrow source 2.
concatenated index£¨×éºÏË÷Òý£©£ºÒ»¸öË÷ÒýÈç¹ûÓɶàÁй¹³É£¬ÄÇô¾Í³ÆÎª×éºÏË÷Òý£¬×éºÏË÷ÒýµÄµÚÒ»ÁÐΪÒýµ¼ÁУ¬Ö»ÓÐν´ÊÖаüº¬Òýµ¼ÁÐʱ£¬Ë÷Òý²Å¿ÉÓá£
¿ÉÑ¡ÔñÐÔ£º±íÖÐijÁеIJ»Í¬ÊýÖµÊýÁ¿/±íµÄ×ÜÐÐÊýÈç¹û½Ó½üÓÚ1£¬ÔòÁеĿÉÑ¡ÔñÐÔΪ¸ß¡£
oracle·ÃÎÊÊý¾ÝµÄ´æÈ¡·½·¨£º
full table scans, fts(È«±íɨÃè)£ºÍ¨¹ýÉèÖÃdb_block_multiblock_read_count¿ÉÒÔÉèÖÃÒ»´ÎioÄܶÁÈ¡µÄÊý¾Ý¿é¸öÊý£¬´Ó¶øÓÐЧ¼õÉÙÈ«±íɨÃèʱµÄio×Ü´ÎÊý£¬Ò²¾ÍÊÇͨ¹ýÔ¤¶Á»úÖÆ½«½«Òª·ÃÎʵÄÊý¾Ý¿éÔ¤ÏȶÁÈëÄÚ´æÖС£Ö»ÓÐÔÚÈ«±íɨÃèÇé¿öϲÅÄÜʹÓöà¿é¶Á²Ù×÷¡£
table access by rowed£¨Í¨¹ýrowid´æÈ¡±í£¬rowid lookup£©£ºÓÉÓÚrowidÖмǼÁËÐд洢µÄλÖã¬ËùÒÔÕâÊÇoracle´æÈ¡µ¥ÐÐÊý¾ÝµÄ×î¿ì·½·¨¡£
index scan£¨Ë÷ÒýɨÃèindex lookup£©£ºÔÚË÷ÒýÖУ¬³ýÁ˴洢ÿ¸öË÷ÒýµÄÖµÍ⣬Ë÷Òý»¹´æ´¢¾ßÓдËÖµµÄÐжÔÓ¦µÄrowidÖµ£¬Ë÷ÒýɨÃè·ÖÁ½²½1£¬É¨ÃèË÷ÒýµÃµ½rowid£»2£¬Í¨¹ý rowid¶ÁÈ¡¾ßÌåÊý¾Ý¡£Ã¿²½¶¼Êǵ¥¶ÀµÄÒ»´Îio£¬ËùÒÔÈç¹ûÊý¾Ý¾ÏÞÖÆÌõ¼þ¹ýÂ˺óµÄ×ÜÁ¿´óÓÚÔ±í×ÜÐÐÊýµÄ5%£10£¥,ÔòʹÓÃË÷ÒýɨÃèЧÂÊϽµºÜ¶à¡£¶øÈç¹û½á¹ûÊý¾ÝÄܹ»È«²¿ÔÚË÷ÒýÖÐÕÒµ½£¬Ôò¿ÉÒÔ±ÜÃâµÚ¶þ²½²Ù×÷£¬´Ó¶ø¼Ó¿ì¼ìË÷ËÙ¶È¡£
¸ù¾ÝË÷ÒýÀàÐÍÓëwhereÏÞÖÆÌõ¼þµÄ²»Í¬£¬ÓÐ4ÖÖÀàÐ͵ÄË÷ÒýɨÃ裺
index unique scan£¨Ë÷ÒýΨһɨÃ裩£º´æÔÚunique»òÕßprimary keyµÄÇé¿öÏ£¬·µ»Øµ¥¸örowidÊý¾ÝÄÚÈÝ¡£
index range scan£¨Ë÷Òý·¶Î§É¨Ã裩£º1£¬ÔÚΨһË÷ÒýÉÏʹÓÃÁËrange²Ù×÷·û£¨>
Ïà¹ØÎĵµ£º
ʹØCUBE ROLLUP GROUPING SETS£¨1£©
ÔÎÄÒý×Ô£º ¾ÛºÏÊÇÊý¾Ý²Ö¿âµÄ»ù´¡¡£ÎªÁËÌá¸ß¾ÛºÏµÄÐÔÄÜ¡£OracleÌṩÁËGroup By Ìõ¿îµÄÀ©Õ¹¡£
1£® CUBE, ROLLUPÀ©Õ¹
2£® 3¸ögroupingº¯Êý
3£® Grouping setÀ©Õ¹
CUBE ROLLUP ......
±íÀàÐÍ£º
1¶Ñ×éÖ¯±í£¨heap organized table£©£ºÕâЩ¾ÍÊÇ“ÆÕͨ”µÄ±ê×¼Êý¾Ý¿â±í¡£Êý¾ÝÒԶѵķ½Ê½¹ÜÀí¡£¶Ñ£¨heap£©ÊÇÒ»×é¿Õ¼ä£¬ÒÔÒ»ÖÖÓÐÐ©Ëæ»úµÄ·½Ê½Ê¹Óá£
2Ë÷Òý×éÖ¯±í£¨index organized table£©£ºÕâЩ±í°´Ë÷Òý½á¹¹´æ´¢¡£Õâ¾ÍÇ¿ÖÆÒªÇóÐб¾ÉíÓÐijÖÖÎïÀí˳Ðò¡£Ë÷Òý×éÖ¯±íIOTÖУ¬Êý¾ÝÒª¸ù¾ÝÖ÷¼üÓÐÐòµØ´æ´¢¡£
3Ë÷Ò ......
²é¿´ÕýÔÚÖ´ÐеÄsqlÓï¾ä
SELECT osuser, username, sql_text from v$session a, v$sqltext b where a.sql_address =b.address order by address, piece;
²¶×½ÔËÐкܾõÄSQL
select username,sid,opname, round(sofar*100 / totalwork,0) || '%' as progress, time_remaining,sql_text from v$session_longops , v$ ......
oracleÀïµÄextendµÄÒâ˼
À©Õ¹ÒÑÖªµÄÊý×é¿Õ¼ä£¬Àý£º
DECLARE
TYPE CourseList IS TABLE OF VARCHAR2(10);
courses CourseList;
BEGIN
-- ³õʼ»¯Êý×éÔªËØ£¬´óСΪ3
courses := CourseList( 'Biol 4412 ', 'Psyc 3112 ', 'Anth 3001 ');
-- ΪÊý×éÔö¼ÓÒ»¸öÔªËØ£¬Êý×é´óСΪ4£¬Ä©Î²µÄÔªËØÎªNULL
courses.EXTEN ......