±à¼ÍƼö: |
±¾ÎÄÀ´×ÔÓÚjianshu£¬±¾ÎÄÖ÷Òª½éÉÜÁËΪʲôMySQLµÈÖ÷Á÷Êý¾Ý¿âÑ¡ÔñB+Ê÷µÄË÷Òý½á¹¹ºÍ³£¼ûµÄMySQLË÷ÒýÓÅ»¯Ë¼Â·µÈÏà¹ØÖªÊ¶¡£ |
|
MySQLµÄMyISAM¡¢InnoDBÒýÇæÄ¬ÈϾùʹÓÃB+Ê÷Ë÷Òý£¨²éѯʱ¶¼ÏÔʾΪ¡°BTREE¡±£©£¬±¾ÎÄÌÖÂÛÁ½¸öÎÊÌ⣺
ΪʲôMySQLµÈÖ÷Á÷Êý¾Ý¿âÑ¡ÔñB+Ê÷µÄË÷Òý½á¹¹£¿
ÈçºÎ»ùÓÚË÷Òý½á¹¹£¬Àí½â³£¼ûµÄMySQLË÷ÒýÓÅ»¯Ë¼Â·£¿
ΪʲôË÷ÒýÎÞ·¨È«²¿×°ÈëÄÚ´æ
Ë÷Òý½á¹¹µÄÑ¡Ôñ»ùÓÚÕâÑùÒ»¸öÐÔÖÊ£º´óÊý¾ÝÁ¿Ê±£¬Ë÷ÒýÎÞ·¨È«²¿×°ÈëÄÚ´æ¡£
ΪʲôË÷ÒýÎÞ·¨È«²¿×°ÈëÄڴ棿¼ÙÉèʹÓÃÊ÷½á¹¹×éÖ¯Ë÷Òý£¬¼òµ¥¹ÀËãһϣº
¼ÙÉèµ¥¸öË÷Òý½Úµã12B£¬1000w¸öÊý¾ÝÐУ¬uniqueË÷Òý£¬ÔòÒ¶×ӽڵ㹲ռԼ100MB£¬Õû¿ÃÊ÷×î¶à200MB¡£
¼ÙÉèÒ»ÐÐÊý¾ÝÕ¼ÓÃ200B£¬ÔòÊý¾Ý¹²Õ¼Ô¼2G¡£
¼ÙÉèË÷Òý´æ´¢ÔÚÄÚ´æÖС£Ò²¾ÍÊÇ˵£¬Ã¿ÔÚÎïÀíÅÌÉϱ£´æ2GµÄÊý¾Ý£¬¾ÍÒªÕ¼ÓÃ200MBµÄÄڴ棬Ë÷Òý:Êý¾ÝµÄÕ¼ÓñÈԼΪ1/10¡£1/10µÄÕ¼ÓñÈËã²»Ëã´óÄØ£¿ÎïÀíÅ̱ÈÄÚ´æÁ®¼ÛµÄ¶à£¬ÒÔһ̨ÄÚ´æ16GÓ²ÅÌ1TµÄ·þÎñÆ÷ΪÀý£¬Èç¹ûÒª´æÂú1TµÄÓ²ÅÌ£¬ÖÁÉÙÐèÒª100GµÄÄڴ棬Զ´óÓÚ16G¡£
¿¼Âǵ½Ò»¸ö±íÉÏ¿ÉÄÜÓжà¸öË÷Òý¡¢ÁªºÏË÷Òý¡¢Êý¾ÝÐÐÕ¼ÓøüСµÈÇé¿ö£¬Êµ¼ÊµÄÕ¼ÓñÈͨ³£´óÓÚ1/10£¬Ä³Ð©Ê±ºòÄÜ´ïµ½1/3¡£ÔÚ»ùÓÚË÷ÒýµÄ´æ´¢¼Ü¹¹ÖУ¬Ë÷Òý:Êý¾ÝµÄÕ¼Óñȹý¸ß£¬Òò´Ë£¬Ë÷ÒýÎÞ·¨È«²¿×°ÈëÄÚ´æ¡£
ÆäËû½á¹¹µÄÎÊÌâ
ÓÉÓÚÎÞ·¨×°ÈëÄڴ棬Ôò±ØÈ»ÒÀÀµ´ÅÅÌ£¨»òSSD£©´æ´¢¡£¶øÄÚ´æµÄ¶ÁдËÙ¶ÈÊÇ´ÅÅ̵ijÉǧÉÏÍò±¶£¨Óë¾ßÌåʵÏÖÓйأ©£¬Òò´Ë£¬ºËÐÄÎÊÌâÊÇ¡°ÈçºÎ¼õÉÙ´ÅÅ̶Áд´ÎÊý¡±¡£
Ê×ÏȲ»¿¼ÂÇÒ³±í»úÖÆ£¬¼ÙÉèÿ´Î¶Á¡¢Ð´¶¼Ö±½Ó´©Í¸µ½´ÅÅÌ£¬ÄÇô£º
ÏßÐԽṹ£º¶Á/дƽ¾ùO(n)´Î
¶þ²æËÑË÷Ê÷£¨BST£©£º¶Á/дƽ¾ùO(log2(n))´Î£»Èç¹ûÊ÷²»Æ½ºâ£¬Ôò×î²î¶Á/дO(n)´Î
×ÔÆ½ºâ¶þ²æËÑË÷Ê÷£¨AVL£©£ºÔÚBSTµÄ»ù´¡ÉϼÓÈëÁË×ÔÆ½ºâËã·¨£¬¶Á/д×î´óO(log2(n))´Î
ºìºÚÊ÷£¨RBT£©£ºÁíÒ»ÖÖ×ÔÆ½ºâµÄ²éÕÒÊ÷£¬¶Á/д×î´óO(log2(n))´Î
BST¡¢AVL¡¢RBTºÜºÃµÄ½«¶Áд´ÎÊý´ÓO(n)ÓÅ»¯µ½O(log2(n))£»ÆäÖУ¬AVLºÍRBT¶¼±ÈBST¶àÁË×ÔÆ½ºâµÄ¹¦ÄÜ£¬½«¶Áд´ÎÊý½µµ½×î´óO(log2(n))¡£
¼ÙÉèʹÓÃ×ÔÔöÖ÷¼ü£¬ÔòÖ÷¼ü±¾ÉíÊÇÓÐÐòµÄ£¬Ê÷½á¹¹µÄ¶Áд´ÎÊýÄܹ»ÓÅ»¯µ½Ê÷¸ß£¬Ê÷¸ßÔ½µÍ¶Áд´ÎÊýÔ½ÉÙ£»×ÔÆ½ºâ±£Ö¤ÁËÊ÷½á¹¹µÄÎȶ¨¡£Èç¹ûÏë½øÒ»²½ÓÅ»¯£¬¿ÉÒÔÒýÈëBÊ÷ºÍB+Ê÷¡£
BÊ÷½â¾öÁËʲôÎÊÌâ
ºÜ¶àÎÄÕ½«BÊ÷Îó³ÆÎªB-£¨¼õ£©Ê÷£¬Õâ¿ÉÄÜÊÇ¶ÔÆäÓ¢ÎÄÃû¡°B-Tree¡±µÄÎó½â£¨¸üÓÐÉõÕߣ¬½«BÊ÷³ÆÎª¶þ²æÊ÷»ò¶þ²æËÑË÷Ê÷£©¡£ÌرðÊÇÓëB+Ê÷Ò»Æð½²µÄʱºò¡£Ï뵱ȻµÄÈÏΪÓÐB+£¨¼Ó£©Ê÷¾ÍÓÐB-£¨¼õ£©Ê÷£¬Êµ¼ÊÉÏB+Ê÷µÄÓ¢ÎÄÃûÊÇ¡°B+-Tree¡±¡£
Èç¹ûÅ׿ªÎ¬»¤²Ù×÷£¬ÄÇôBÊ÷¾ÍÏñÒ»¿Ã¡°m²æËÑË÷Ê÷¡±£¨mÊÇ×ÓÊ÷µÄ×î´ó¸öÊý£©£¬Ê±¼ä¸´ÔÓ¶ÈΪO(logm(n))¡£È»¶ø£¬BÊ÷Éè¼ÆÁËÒ»ÖÖ¸ßЧ¼òµ¥µÄά»¤²Ù×÷£¬Ê¹BÊ÷µÄÉî¶Èά³ÖÔÚÔ¼log(ceil(m/2))(n)~logm(n)Ö®¼ä£¬´ó´ó½µµÍÊ÷¸ß¡£

ÔÙ´ÎÇ¿µ÷£º
²»Òª¾À½áÓÚʱ¼ä¸´ÔÓ¶È£¬Óëµ¥´¿µÄËã·¨²»Í¬£¬´ÅÅÌIO´ÎÊý²ÅÊǸü´óµÄÓ°ÏìÒòËØ¡£¶ÁÕß¿ÉÒÔÍÆµ¼¿´¿´£¬BÊ÷ÓëAVLµÄʱ¼ä¸´ÔÓ¶ÈÊÇÏàͬµÄ£¬µ«ÓÉÓÚBÊ÷µÄ²ãÊýÉÙ£¬´ÅÅÌIO´ÎÊýÉÙ£¬Êµ¼ùÖÐBÊ÷µÄÐÔÄÜÒªÓÅÓÚAVLµÈ¶þ²æÊ÷¡£
ͬ¶þ²æËÑË÷Ê÷ÀàËÆ£¬Ã¿¸ö½Úµã´æ´¢Á˶à¸ökeyºÍ×ÓÊ÷£¬×ÓÊ÷Óëkey°´Ë³ÐòÅÅÁС£
Ò³±íµÄÄ¿µÄÊÇÀ©Õ¹ÄÚ´æ+¼ÓËÙ´ÅÅ̶Áд¡£Ò»¸öÒ³£¨Page£©Í¨³£4K£¨µÈÓÚ´ÅÅÌÊý¾Ý¿éblockµÄ´óС£¬¼ûinodeÓëblockµÄ·ÖÎö£©£¬´Ó´ÅÅ̶ÁдµÄ½Ç¶È³ö·¢£¬²Ù×÷ϵͳÿ´ÎÒÔҳΪµ¥Î»½«ÄÚÈÝ´Ó´ÅÅ̼ÓÔØµ½Äڴ棨ÒÔ̯·ÖѰµÀ³É±¾£©£¬ÐÞ¸ÄÒ³ºó£¬ÔÙÔñÆÚ½«¸Ãҳд»Ø´ÅÅÌ¡£¿¼Âǵ½Ò³±íµÄÁ¼ºÃÐÔÖÊ£¬¿ÉÒÔʹÿ¸ö½ÚµãµÄ´óСԼµÈÓÚÒ»¸öÒ³£¨Ê¹m·Ç³£´ó£©£¬Õâÿ´Î¼ÓÔØµÄÒ»¸öÒ³¾ÍÄÜÍêÕû¸²¸ÇÒ»¸ö½Úµã£¬ÒÔ±ãÑ¡ÔñÏÂÒ»²ã×ÓÊ÷£»¶Ô×ÓÊ÷ͬÀí¡£¶ÔÓÚÒ³±íÀ´Ëµ£¬AVL£¨»òRBT£©Ï൱ÓÚ1¸ökey+2¸ö×ÓÊ÷µÄBÊ÷£¬ÓÉÓÚÂß¼ÉÏÏàÁڵĽڵ㣬ÎïÀíÉÏͨ³£²»ÏàÁÚ£¬Òò´Ë£¬¶ÁÈëÒ»¸ö4kÒ³£¬Ò³ÃæÄÚ¾ø´ó²¿·Ö¿Õ¼ä¶¼½«ÊÇÎÞЧÊý¾Ý¡£
¼ÙÉèkey¡¢×ÓÊ÷½ÚµãÖ¸Õë¾ùÕ¼ÓÃ4B£¬ÔòBÊ÷½Úµã×î´óm * (4 + 4) = 8m B£»Ò³Ãæ´óС4KB¡£Ôòm
= 4 * 1024 / 8 = 512£¬Ò»¸ö512²æµÄBÊ÷£¬1000wµÄÊý¾Ý£¬Éî¶È×î´ó log(512/2)(10^7)
= 3.02 ~= 4¡£¶Ô±È¶þ²æÊ÷ÈçAVLµÄÉî¶ÈΪlog(2)(10^7) = 23.25 ~= 24£¬Ïà²îÁË5±¶ÒÔÉÏ¡£Õ𾪣¡BÊ÷Ë÷ÒýÉî¶È¾¹È»Èç´Ë£¡
ÁíÍ⣬BÊ÷¶Ô¾Ö²¿ÐÔÔÀí·Ç³£ÓѺá£Èç¹ûkey±È½ÏС£¨±ÈÈçÉÏÃæ4BµÄ×ÔÔökey£©£¬Ôò³ýÁËÒ³±íµÄ¼Ó³É£¬»º´æ»¹ÄܽøÒ»²½Ô¤¶Á¼ÓËÙ¡£ÃÀ×Ì×Ì~
B+Ê÷½â¾öÁËʲôÎÊÌâ
BÊ÷µÄÊ£ÓàÎÊÌâ
È»¶ø£¬Èç¹ûҪʵ¼ÊÓ¦Óõ½Êý¾Ý¿âµÄË÷ÒýÖУ¬BÊ÷»¹ÓÐһЩÎÊÌ⣺
δ¶¨Î»Êý¾ÝÐÐ
ÎÞ·¨´¦Àí·¶Î§²éѯ
ÎÊÌâ1
Êý¾Ý±íµÄ¼Ç¼Óжà¸ö×ֶΣ¬½ö½ö¶¨Î»µ½Ö÷¼üÊDz»¹»µÄ£¬»¹ÐèÒª¶¨Î»µ½Êý¾ÝÐС£ÓÐ3¸ö·½°¸½â¾ö£º
Ö±½Ó½«key¶ÔÓ¦µÄÊý¾ÝÐУ¨¿ÉÄܶÔÓ¦¶àÐУ©´æ´¢ÔÚ½ÚµãÖС£
Êý¾ÝÐе¥¶À´æ´¢£»½ÚµãÖÐÔö¼ÓÒ»¸ö×ֶΣ¬¶¨Î»key¶ÔÓ¦Êý¾ÝÐеÄλÖá£
ÐÞ¸ÄkeyÓë×ÓÊ÷µÄÅжÏÂß¼£¬Ê¹×ÓÊ÷´óÓÚµÈÓÚÉÏÒ»keyСÓÚÏÂÒ»key£¬×îÖÕËùÓзÃÎʶ¼½«ÂäÓÚÒ¶×ӽڵ㣻Ҷ×Ó½ÚµãÖÐÖ±½Ó´æ´¢Êý¾ÝÐлòÊý¾ÝÐеÄλÖá£
·½°¸1ÖУ¬Êý¾ÝÐÐͨ³£·Ç³£´ó£¬´æ´¢Êý¾ÝÐн«¼õÉÙÒ³ÃæÖеÄ×ÓÊ÷¸öÊý£¬m¼õСÊ÷¸ßÔö´ó¡£¼ÙÉèÊý¾ÝÐÐÕ¼ÓÃ200B£¬¿ÉºöÂÔ×éÖ¯BÊ÷µÄÖ¸Õ룬ÔòеÄm
= 4 * 1024 / 200 = 20.48 ~= 21£¬Éî¶È×î´ó log(21/2)(10^7)
~= 7¡£Ôö¼ÓÁËÒ»±¶ÒÔÉϵÄIO£¬²»¿¼ÂÇ¡£
·½°¸2ÖУ¬½ÚµãÔö¼ÓÁËÒ»¸ö×ֶΡ£¼ÙÉèÊÇ4BµÄÖ¸Õ룬ÔòеÄm = 4 * 1024 / 12 = 341.33
~= 341£¬Éî¶È×î´ó log(341/2)(10^7) = 3.14 ~= 4¡£Óë3²î±ð²»´ó£¬¿ÉÒÔ¿¼ÂÇ¡£
·½°¸3µÄ½ÚµãmÓëÉî¶È²»±ä£¬µ«Ê±¼ä¸´ÔӶȱäΪÎȶ¨µÄO(logm(n))¡£¿¼ÂÇ¡£
ÎÊÌâ2
ʵ¼ÊÒµÎñÖУ¬·¶Î§²éѯµÄƵÂʷdz£¸ß£¬BÊ÷Ö»Äܶ¨Î»µ½Ò»¸öË÷ÒýλÖ㨿ÉÄܶÔÓ¦¶àÐУ©£¬ºÜÄÑ´¦Àí·¶Î§²éѯ¡£¸ø³ö2ÖÖ·½°¸£º
²»¸Ä¶¯£º²éѯµÄʱºòÏȲ鵽×ó½ç£¬Ôٲ鵽Óҽ磬ȻºóDFS£¨»òBFS£©±éÀú×ó½ç¡¢ÓÒ½çÖ®¼äµÄ½Úµã¡£
ÔÚ¡°ÎÊÌâ1-·½°¸3¡±µÄ»ù´¡ÉÏ£¬ÓÉÓÚËùÓÐÊý¾ÝÐж¼´æ´¢ÔÚÒ¶×ӽڵ㣬BÊ÷µÄÒ¶×ӽڵ㱾ÉíÒ²ÊÇÓÐÐòµÄ£¬¿ÉÒÔÔö¼ÓÒ»¸öÖ¸Õ룬ָÏòµ±Ç°Ò¶×ӽڵ㰴Ö÷¼ü˳ÐòµÄÏÂÒ»Ò¶×ӽڵ㣻²éѯʱÏȲ鵽×ó½ç£¬Ôٲ鵽Óҽ磬Ȼºó´Ó×ó½çµ½ÓнçÏßÐÔ±éÀú¡£
Õ§Ò»¿´¸Ð¾õ·½°¸1±È·½°¸2ºÃ¡ª¡ªÊ±¼ä¸´ÔӶȺͳ£ÊýÏî¶¼Ò»Ñù£¬·½°¸1»¹²»ÐèÒª¸Ä¶¯¡£µ«ÊDZðÍüÁ˾ֲ¿ÐÔÔÀí£¬²»¹Ü½ÚµãÖд洢µÄÊÇÊý¾ÝÐл¹ÊÇÊý¾ÝÐÐλÖ㬷½°¸2µÄºÃ´¦ÔÚÓÚ£¬Ò¶×Ó½ÚµãÁ¬Ðø´æ´¢£¬¶ÔÒ³±íºÍ»º´æÓѺ᣶ø·½°¸1ÔòÃæÁÙ½ÚµãÂß¼ÏàÁÚ¡¢ÎïÀí·ÖÀëµÄȱµã¡£
Òý³öB+Ê÷
×ÛÉÏ£¬ÎÊÌâ1µÄ·½°¸2ÓëÎÊÌâ2µÄ·½°¸1¿ÉÕûºÏΪһÖÖ·½°¸£¨»ùÓÚBÊ÷µÄË÷Òý£©£¬ÎÊÌâ1µÄ·½°¸3ÓëÎÊÌâ2µÄ·½°¸2¿ÉÕûºÏΪһÖÖ£¨»ùÓÚB+Ê÷µÄË÷Òý£©¡£Êµ¼ÊÉÏ£¬Êý¾Ý¿â¡¢ÎļþϵͳÓÐЩ²ÉÓÃÁËBÊ÷£¬ÓÐЩ²ÉÓÃB+Ê÷¡£
ÓÉÓÚijЩºï×ÓÔÝδÃ÷°×µÄÔÒò£¬°üÀ¨MySQLÔÚÄÚµÄÖ÷Á÷Êý¾Ý¿â¶àÑ¡ÔñÁËB+Ê÷¡£¼´£º

Ö÷Òª±ä¶¯ÈçÉÏËùÊö£º
ÐÞ¸ÄkeyÓë×ÓÊ÷µÄ×éÖ¯Âß¼£¬½«Ë÷Òý·ÃÎʶ¼Âäµ½Ò¶×Ó½Úµã
°´Ë³Ðò½«Ò¶×ӽڵ㴮ÆðÀ´£¨·½±ã·¶Î§²éѯ£©
BÊ÷ºÍB+Ê÷µÄÔö¡¢É¾¡¢²é¹ý³Ì
BÊ÷µÄÔöɾ¹ý³ÌÔÝʱ¿É²Î¿¼´ÓBÊ÷¡¢B+Ê÷¡¢B*Ê÷̸µ½R Ê÷µÄ¡°6¡¢BÊ÷µÄ²åÈ롢ɾ³ý²Ù×÷¡±Ð¡½Ú£¬B+Ê÷µÄÔöɾͬÀí¡£´Ë´¦Ôݲ»×¸Êö¡£
MysqlË÷ÒýÓÅ»¯
¸ù¾ÝB+Ê÷µÄÐÔÖÊ£¬ºÜÈÝÒ×Àí½â¸÷ÖÖ³£¼ûµÄMySQLË÷ÒýÓÅ»¯Ë¼Â·¡£
Ôݲ»¿¼ÂDz»Í¬ÒýÇæÖ®¼äµÄÇø±ð¡£
ÓÅÏÈʹÓÃ×ÔÔökey×÷ΪÖ÷¼ü
Ç°ÃæµÄ·ÖÎöÖУ¬¼ÙÉèÓÃ4BµÄ×ÔÔökey×÷ΪË÷Òý£¬Ôòm¿É´ïµ½512£¬²ã¸ß½öÓÐ3¡£Ê¹ÓÃ×ÔÔöµÄkeyÓÐÁ½¸öºÃ´¦£º
×ÔÔökeyÒ»°ãΪintµÈÕûÊýÐÍ£¬key±È½Ï½ô´Õ£¬ÕâÑùm¿ÉÒԷdz£´ó£¬¶øÇÒË÷ÒýÕ¼ÓÿռäС¡£×¶ËµÄÀý×Ó£¬Èç¹ûʹÓÃ50BµÄvarchar£¨°üÀ¨³¤¶È£©£¬ÄÇôm
= 4 * 1024 / 54m = 75.85 ~= 76£¬Éî¶È×î´ó log(76/2)(10^7)
= 4.43 ~= 5£¬ÔÙ¼ÓÉÏcacheȱʧ¡¢×Ö·û´®±È½ÏµÄ³É±¾£¬Ê±¼ä³É±¾Ôö¼Ó½Ï´ó¡£Í¬Ê±£¬keyÓÉ4BÔö³¤µ½50B£¬Õû¿ÃË÷ÒýÊ÷µÄ¿Õ¼äÕ¼ÓÃÔö³¤Ò²ÊǼ«Îª¿Ö²ÀµÄ£¨Èç¹û¶þ¼¶Ë÷ÒýʹÓÃÖ÷¼ü¶¨Î»Êý¾ÝÐУ¬Ôò¿Õ¼äÔö³¤¸ü¼ÓÑÏÖØ£©¡£
×ÔÔöµÄÐÔÖÊʹµÃÐÂÊý¾ÝÐеIJåÈëÇëÇó±ØÈ»Âäµ½Ë÷ÒýÊ÷µÄ×îÓҲ࣬·¢Éú½Úµã·ÖÁÑµÄÆµÂʽϵͣ¬ÀíÏëÇé¿öÏ£¬Ë÷ÒýÊ÷¿ÉÒÔ´ïµ½¡°Âú¡±µÄ״̬¡£Ë÷ÒýÊ÷Âú£¬Ò»·½Ãæ²ã¸ß¸üµÍ£¬Ò»·½ÃæÉ¾³ý½Úµãʱ·¢Éú½ÚµãºÏ²¢µÄƵÂÊÒ²½ÏµÍ¡£ÓÅ»¯¾Àú£º
ºï×ÓÔøÊ¹ÓÃvarchar(100)µÄÁÐ×ö¹ýÖ÷¼ü£¬´æ´¢containerId£¬¹ýÁË3¡¢4Ìì100GµÄÊý¾Ý¿â¾ÍÂúÁË£¬DBAС½ã½ãÓʼþÀïίÍñ±íʾÁ˶ÔÎҵıÉÊÓ¡£¡£¡£Ö®ºóÔö¼ÓÁË×ÔÔöÁÐ×÷ΪÖ÷¼ü£¬containerId×÷ΪuniqueµÄ¶þ¼¶Ë÷Òý£¬Ê±¼ä¡¢¿Õ¼äÓÅ»¯Ð§¹ûÏ൱ÏÔÖø¡£
×î×óǰ׺ƥÅä
Ë÷Òý¿ÉÒÔ¼òµ¥ÈçÒ»¸öÁÐ(a)£¬Ò²¿ÉÒÔ¸´ÔÓÈç¶à¸öÁÐ(a, b, c, d)£¬¼´ÁªºÏË÷Òý¡£Èç¹ûÊÇÁªºÏË÷Òý£¬ÄÇôkeyÒ²Óɶà¸öÁÐ×é³É£¬Í¬Ê±£¬Ë÷ÒýÖ»ÄÜÓÃÓÚ²éÕÒkeyÊÇ·ñ´æÔÚ£¨ÏàµÈ£©£¬Óöµ½·¶Î§²éѯ(>¡¢<¡¢between¡¢like×óÆ¥Åä)µÈ¾Í²»ÄܽøÒ»²½Æ¥ÅäÁË£¬ºóÐøÍË»¯ÎªÏßÐÔ²éÕÒ¡£Òò´Ë£¬ÁеÄÅÅÁÐ˳Ðò¾ö¶¨ÁË¿ÉÃüÖÐË÷ÒýµÄÁÐÊý¡£
ÈçÓÐË÷Òý(a, b, c, d)£¬²éѯÌõ¼þa = 1 and b = 2 and c > 3
and d = 4£¬Ôò»áÔÚÿ¸ö½ÚµãÒÀ´ÎÃüÖÐa¡¢b¡¢c£¬ÎÞ·¨ÃüÖÐd¡£Ò²¾ÍÊÇ×î×óǰ׺ƥÅäÔÔò¡£
=¡¢in×Ô¶¯ÓÅ»¯Ë³Ðò
²»ÐèÒª¿¼ÂÇ=¡¢inµÈµÄ˳Ðò£¬mysql»á×Ô¶¯ÓÅ»¯ÕâЩÌõ¼þµÄ˳Ðò£¬ÒÔÆ¥Å価¿ÉÄܶàµÄË÷ÒýÁС£
ÈçÓÐË÷Òý(a, b, c, d)£¬²éѯÌõ¼þc > 3 and b = 2 and a = 1
and d < 4Óëa = 1 and c > 3 and b = 2 and d <
4µÈ˳Ðò¶¼ÊÇ¿ÉÒԵģ¬MySQL»á×Ô¶¯ÓÅ»¯Îªa = 1 and b = 2 and c > 3
and d < 4£¬ÒÀ´ÎÃüÖÐa¡¢b¡¢c¡£
Ë÷ÒýÁв»ÄܲÎÓë¼ÆËã
ÓÐË÷ÒýÁвÎÓë¼ÆËãµÄ²éѯÌõ¼þ¶ÔË÷Òý²»ÓѺã¨ÉõÖÁÎÞ·¨Ê¹ÓÃË÷Òý£©£¬Èçfrom_unixtime(create_time)
= '2014-05-29'¡£
ÔÒòºÜ¼òµ¥£¬ÈçºÎÔÚ½ÚµãÖвéÕÒµ½¶ÔÓ¦key£¿Èç¹ûÏßÐÔɨÃ裬Ôòÿ´Î¶¼ÐèÒªÖØÐ¼ÆË㣬³É±¾Ì«¸ß£»Èç¹û¶þ·Ö²éÕÒ£¬ÔòÐèÒªÕë¶Ôfrom_unixtime·½·¨È·¶¨´óС¹ØÏµ¡£
Òò´Ë£¬Ë÷ÒýÁв»ÄܲÎÓë¼ÆËã¡£ÉÏÊöfrom_unixtime(create_time) = '2014-05-29'Óï¾äÓ¦¸Ãд³Écreate_time
= unix_timestamp('2014-05-29')¡£
ÄÜÀ©Õ¹¾Í²»ÒªÐ½¨Ë÷Òý
Èç¹ûÒÑÓÐË÷Òý(a)£¬Ï뽨Á¢Ë÷Òý(a, b)£¬¾¡Á¿Ñ¡ÔñÐÞ¸ÄË÷Òý(a)ΪË÷Òý(a, b)¡£
н¨Ë÷ÒýµÄ³É±¾ºÜÈÝÒ×Àí½â¡£¶ø»ùÓÚË÷Òý(a)ÐÞ¸ÄΪË÷Òý(a, b)µÄ»°£¬MySQL¿ÉÒÔÖ±½ÓÔÚË÷ÒýaµÄB+Ê÷ÉÏ£¬¾¹ý·ÖÁÑ¡¢ºÏ²¢µÈÐÞ¸ÄΪË÷Òý(a,
b)¡£
²»ÐèÒª½¨Á¢Ç°×ºÓаüº¬¹ØÏµµÄË÷Òý
Èç¹ûÒÑÓÐË÷Òý(a, b)£¬Ôò²»ÐèÒªÔÙ½¨Á¢Ë÷Òý(a)£¬µ«ÊÇÈç¹ûÓбØÒª£¬ÔòÈÔÈ»Ð迼Âǽ¨Á¢Ë÷Òý(b)¡£
Ñ¡ÔñÇø·Ö¶È¸ßµÄÁÐ×÷Ë÷Òý
ºÜÈÝÒ×Àí½â¡£È磬ÓÃÐÔ±ð×÷Ë÷Òý£¬ÄÇôË÷Òý½öÄܽ«1000wÐÐÊý¾Ý»®·ÖΪÁ½²¿·Ö£¨Èç500wÄУ¬500wÅ®£©£¬Ë÷Òý¼¸ºõÎÞЧ¡£
Çø·Ö¶ÈµÄ¹«Ê½ÊÇcount(distinct <col>) / count(*)£¬±íʾ×ֶβ»Öظ´µÄ±ÈÀý£¬±ÈÀýÔ½´óÇø·Ö¶ÈÔ½ºÃ¡£Î¨Ò»¼üµÄÇø·Ö¶ÈÊÇ1£¬¶øÒ»Ð©×´Ì¬¡¢ÐÔ±ð×ֶοÉÄÜÔÚ´óÊý¾ÝÃæÇ°µÄÇø·Ö¶ÈÇ÷½üÓÚ0¡£
Õâ¸öÖµºÜÄÑÈ·¶¨£¬Ò»°ãÐèÒªjoinµÄ×Ö¶ÎÒªÇóÊÇ0.1ÒÔÉÏ£¬¼´Æ½¾ù1ÌõɨÃè10Ìõ¼Ç¼¡£
|