oracleλͼË÷ÒýB-Ê÷Ë÷Òý
B-Ê÷Ë÷ÒýÔÚ
OracleÖÐÊÇÒ»¸öͨÓõÄË÷Òý£¬ÔÚ´´½¨Ë÷ÒýʱËü¾ÍÊÇĬÈϵÄË÷ÒýÀàÐÍ¡£×î¶à¿ÉÒÔ°üÀ¨32ÁС£
λͼË÷ÒýOracleΪÿ¸öΨһ¼ü´´½¨Ò»¸öλͼ£¬È»ºó°ÑÓë¼üÖµËù¹ØÁªµÄROWID±£´æÎªÎ»Í¼¡£×î¶à¿ÉÒÔ°üÀ¨30ÁС£
Ò»°ãÇé¿öÏ£¬´ó¶àÊýÓû§¶¼Ö»´´½¨TYPEΪNORMALµÄB-Ê÷Ë÷Òý£¬ËùÒÔ¶ÔÓڽϵͻùÊýµÄÁÐÎÒÃǶ¼ÊDz»´´½¨Ë÷ÒýµÄ£¬ÒòΪB-Ê÷Ë÷Òý¶Ô²éѯËÙ¶ÈÌáÉý²»Ò»¶¨»áÓиÄÉÆ£¬ÉõÖÁ»áÔö¼ÓInsert¡¢Update¡¢DeleteÃüÁîËùÏûºÄµÄʱ¼ä¡£ÏÂÃæÎÒÃÇͨ¹ýÒ»¸öÀý×ÓÀ´±È½ÏB-Ê÷Ë÷ÒýÓëλͼË÷ÒýÔÚ¶Ô²éѯËÙ¶ÈÌáÉýµÄЧ¹û¡£
SQL>--ÀýÈçÏÂÃæÒ»¸ö²âÊÔ±íÓÐ534888Ìõ¼Ç¼
SQL> select count(*) from henry_test;
COUNT(*)
----------
534888
SQL> --ûÓÐË÷ÒýµÄÇé¿ö£¨ºÄʱ1.631Ã룩
SQL> select count(*) from henry_test where payment_method<'91';
COUNT(*)
----------
371466
SQL> --½¨Á¢B-Ê÷Ë÷Òý
SQL> create index idx_henry_test1 on henry_test(payment_method);
Index created
SQL> --ʹÓÃÌáÊ¾Ç¿ÖÆÊ¹ÓÃË÷Òý
SQL> select /*+ index(henry_test IDX_HENRY_TEST1)*/count(*) from henry_test where payment_method<'91';
COUNT(*)
----------
371466
SQL>--£¨ºÄʱ0.181Ã룩
SQL> --ɾ³ýË÷Òý
SQL> drop index IDX_HENRY_TEST1;
Index dropped
SQL> --ÒòΪpayment_methodÕâ¸öÁеĻùÊý·Ç³£µÄµÍ£¬Ö»ÓÐ5ÖÖÖµ£¬ËùÒԷdz£ÊʺÏʹÓÃλͼË÷Òý
SQL> --½¨Á¢Î»Í¼Ë÷Òý
SQL> create bitmap index IDX_HENRY_TEST1 on HENRY_TEST (PAYMENT_METHOD);
Index created
SQL> --ʹÓÃÌáÊ¾Ç¿ÖÆÊ¹ÓÃË÷Òý
SQL> select /*+ index(henry_test IDX_HENRY_TEST1)*/count(*) from henry_test where payment_method<'91';
COUNT(*)
----------
371466
SQL>--£¨ºÄʱ0. 01Ã룩
SQL> --ɾ³ýË÷Òý
SQL> drop index IDX_HENRY_TEST1;
Index dropped
´ó¼Ò¿ÉÒÔ¿´µ½Î»Í¼Ë÷Òý±ÈB-Ê÷Ë÷ÒýµÄËÙ¶ÈÌá¸ßÁËÊ®¶à±¶¡£
ÏÂÃæ2¶ÎÎÄ×ÖÊÇÎÒÖ±½Ó´ÓÊéÉϳµÄ£¬¼ûЦÁË¡£
λͼË÷ÒýÔÚ¼ÓÔØ±í£¨²åÈë²Ù×÷£©Ê±Í¨³£Òª±ÈB-Ê÷Ë÷Òý×öµÃºÃ¡£Í¨³££¬Î»Í¼Ë÷ÒýÒª±ÈÒ»¸öµÍ»ùÊý£¨ºÜÉÙ²»Í¬Öµ£©ÉϵÄB-Ê÷Ë÷ÒýÒª¿ì3~4±¶£¬µ«Èç¹ûÐÂÔöµÄÖµÕ¼²åÈëÐеÄ70%ÒÔÉÏʱ£¬B-Ê÷Ë÷Òýͨ³£»á¸ü¿ìһЩ¡£µ±Ã¿Ìõ¼Ç¼¶¼Ôö¼ÓÒ»¸öÐÂֵʱ£¬B-Ê÷Ë÷ÒýÒª±ÈλͼË÷Òý¿ì3±¶¡£
½¨Òé²»ÒªÔÚһЩÁª»úÊÂÎñ´¦Àí£¨OLTP£©Ó¦ÓóÌÐòÖÐʹÓÃλͼË÷Òý¡£B-Ê÷Ë÷ÒýµÄË÷ÒýÖµÖаüº¬ROWID£¬ÕâÑùOracle¾Í¿ÉÒÔÔÚÐм¶±ðÉÏËø¶¨Ë÷Òý¡£Î»Í¼Ë÷Òý±»´æ´¢ÎªÑ¹ËõµÄË÷ÒýÖµ£¬ÆäÖаüº¬ÁËÒ»¸ö·¶Î§ÄÚµÄROWID£¬Òò´ËORACLE±ØÐëÕë¶ÔÒ»¸ö¸ø¶¨ÖµËø¶¨ËùÓз¶Î§ÄÚµÄROWID¡£ÕâÖÖËø¶¨¿ÉÄÜ×Ô°¢Ä³Ð©DMLÓï¾äÖÐÔì³ÉËÀËø¡£SELECTÓï¾ä²»»áÊܵ½ÕâÖÖËø¶¨ÎÊÌâµÄÓ°Ïì¡£
λͼË÷ÒýÓкܶàÏÞÖÆ£º
1¡¢ »ùÓÚ¹æÔòµÄÓÅ»¯Æ÷²»»á¿¼ÂÇλͼË÷Òý
2¡¢ µ±Ö´ÐÐATLER TABLEÓï¾ä£¬²¢Ð޸İüº¬ÓÐλͼË÷ÒýµÄÁÐʱ£¬»áʹλͼË÷ÒýʵЧ
3¡¢ λͼË÷ÒýÔÚË÷Òý¿éÖд¢´æÁËË÷Òý¼üµÄÖµ£»È»¶ø£¬ËûÃDz¢²»ÄÜÓû§ÈκÎÀàÐ͵ÄÍêÕûÐÔ¼ì²é
4¡¢ λͼË÷Òý²»Äܱ»ÉêÃ÷ΪΨһË÷Òý