ºìÁªLinuxÃÅ»§
Linux°ïÖú

¼ÓËÙ¶¯Ì¬ÍøÕ¾Ö®MySQL Ë÷Òý·ÖÎöºÍÓÅ»¯

·¢²¼Ê±¼ä:2005-06-01 00:24:26À´Ô´:ºìÁª×÷Õß:chentong
Ò»¡¢Ê²Ã´ÊÇË÷Òý£¿
¡¡¡¡Ë÷ÒýÓÃÀ´¿ìËÙµØÑ°ÕÒÄÇЩ¾ßÓÐÌض¨ÖµµÄ¼Ç¼£¬ËùÓÐMySQLË÷Òý¶¼ÒÔB-Ê÷µÄÐÎʽ±£´æ¡£Èç¹ûûÓÐË÷Òý£¬Ö´ÐвéѯʱMySQL±ØÐë´ÓµÚÒ»¸ö¼Ç¼¿ªÊ¼É¨ÃèÕû¸ö±íµÄËùÓмǼ£¬Ö±ÖÁÕÒµ½·ûºÏÒªÇóµÄ¼Ç¼¡£±íÀïÃæµÄ¼Ç¼ÊýÁ¿Ô½¶à£¬Õâ¸ö²Ù×÷µÄ´ú¼Û¾ÍÔ½¸ß¡£Èç¹û×÷ΪËÑË÷Ìõ¼þµÄÁÐÉÏÒѾ­´´½¨ÁËË÷Òý£¬MySQLÎÞÐèɨÃèÈκμǼ¼´¿ÉѸËٵõ½Ä¿±ê¼Ç¼ËùÔÚµÄλÖá£Èç¹û±íÓÐ1000¸ö¼Ç¼£¬Í¨¹ýË÷Òý²éÕҼǼÖÁÉÙÒª±È˳ÐòɨÃè¼Ç¼¿ì100±¶¡£
¡¡¡¡
¡¡¡¡¼ÙÉèÎÒÃÇ´´½¨ÁËÒ»¸öÃûΪpeopleµÄ±í£º
¡¡¡¡
¡¡¡¡CREATE TABLE people ( peopleid SMALLINT NOT NULL, name CHAR(50) NOT NULL );
¡¡¡¡
¡¡¡¡È»ºó£¬ÎÒÃÇÍêÈ«Ëæ»ú°Ñ1000¸ö²»Í¬nameÖµ²åÈëµ½people±í¡£ÏÂͼÏÔʾÁËpeople±íËùÔÚÊý¾ÝÎļþµÄһС²¿·Ö£º
¡¡¡¡
¡¡¡¡¿ÉÒÔ¿´µ½£¬ÔÚÊý¾ÝÎļþÖÐnameÁÐûÓÐÈκÎÃ÷È·µÄ´ÎÐò¡£Èç¹ûÎÒÃÇ´´½¨ÁËnameÁеÄË÷Òý£¬MySQL½«ÔÚË÷ÒýÖÐÅÅÐònameÁУº
¡¡¡¡
¡¡¡¡¶ÔÓÚË÷ÒýÖеÄÿһÏMySQLÔÚÄÚ²¿ÎªËü±£´æÒ»¸öÊý¾ÝÎļþÖÐʵ¼Ê¼Ç¼ËùÔÚλÖõġ°Ö¸Õ롱¡£Òò´Ë£¬Èç¹ûÎÒÃÇÒª²éÕÒnameµÈÓÚ¡°Mike¡±¼Ç¼µÄpeopleid£¨SQLÃüÁîΪ¡°SELECT peopleid FROM people WHERE name='Mike';¡±£©£¬MySQLÄܹ»ÔÚnameµÄË÷ÒýÖвéÕÒ¡°Mike¡±Öµ£¬È»ºóÖ±½Óתµ½Êý¾ÝÎļþÖÐÏàÓ¦µÄÐУ¬×¼È·µØ·µ»Ø¸ÃÐеÄpeopleid£¨999£©¡£ÔÚÕâ¸ö¹ý³ÌÖУ¬MySQLÖ»Ðè´¦ÀíÒ»¸öÐоͿÉÒÔ·µ»Ø½á¹û¡£Èç¹ûûÓС°name¡±ÁеÄË÷Òý£¬MySQLҪɨÃèÊý¾ÝÎļþÖеÄËùÓмǼ£¬¼´1000¸ö¼Ç¼£¡ÏÔÈ»£¬ÐèÒªMySQL´¦ÀíµÄ¼Ç¼ÊýÁ¿Ô½ÉÙ£¬ÔòËüÍê³ÉÈÎÎñµÄËٶȾÍÔ½¿ì¡£
¡¡¡¡
¡¡¡¡¶þ¡¢Ë÷ÒýµÄÀàÐÍ
¡¡¡¡MySQLÌṩ¶àÖÖË÷ÒýÀàÐ͹©Ñ¡Ôñ£º
¡¡¡¡
¡¡¡¡ÆÕͨË÷Òý
¡¡¡¡ÕâÊÇ×î»ù±¾µÄË÷ÒýÀàÐÍ£¬¶øÇÒËüûÓÐΨһÐÔÖ®ÀàµÄÏÞÖÆ¡£ÆÕͨË÷Òý¿ÉÒÔͨ¹ýÒÔϼ¸ÖÖ·½Ê½´´½¨£º
¡¡¡¡´´½¨Ë÷Òý£¬ÀýÈçCREATE INDEX <Ë÷ÒýµÄÃû×Ö> ON tablename (ÁеÄÁбí);
¡¡¡¡ÐÞ¸Ä±í£¬ÀýÈçALTER TABLE tablename ADD INDEX [Ë÷ÒýµÄÃû×Ö] (ÁеÄÁбí);
¡¡¡¡´´½¨±íµÄʱºòÖ¸¶¨Ë÷Òý£¬ÀýÈçCREATE TABLE tablename ( [...], INDEX [Ë÷ÒýµÄÃû×Ö] (ÁеÄÁбí) );
¡¡¡¡
¡¡¡¡Î¨Ò»ÐÔË÷Òý
¡¡¡¡ÕâÖÖË÷ÒýºÍÇ°ÃæµÄ¡°ÆÕͨË÷Òý¡±»ù±¾Ïàͬ£¬µ«ÓÐÒ»¸öÇø±ð£ºË÷ÒýÁеÄËùÓÐÖµ¶¼Ö»ÄܳöÏÖÒ»´Î£¬¼´±ØÐëΨһ¡£Î¨Ò»ÐÔË÷Òý¿ÉÒÔÓÃÒÔϼ¸ÖÖ·½Ê½´´½¨£º
¡¡¡¡´´½¨Ë÷Òý£¬ÀýÈçCREATE UNIQUE INDEX <Ë÷ÒýµÄÃû×Ö> ON tablename (ÁеÄÁбí);
¡¡¡¡ÐÞ¸Ä±í£¬ÀýÈçALTER TABLE tablename ADD UNIQUE [Ë÷ÒýµÄÃû×Ö] (ÁеÄÁбí);
¡¡¡¡´´½¨±íµÄʱºòÖ¸¶¨Ë÷Òý£¬ÀýÈçCREATE TABLE tablename ( [...], UNIQUE [Ë÷ÒýµÄÃû×Ö] (ÁеÄÁбí) );
¡¡¡¡
¡¡¡¡Ö÷¼ü
¡¡¡¡Ö÷¼üÊÇÒ»ÖÖΨһÐÔË÷Òý£¬µ«Ëü±ØÐëÖ¸¶¨Îª¡°PRIMARY KEY¡±¡£Èç¹ûÄãÔø¾­ÓùýAUTO_INCREMENTÀàÐ͵ÄÁУ¬Äã¿ÉÄÜÒѾ­ÊìϤÖ÷¼üÖ®ÀàµÄ¸ÅÄîÁË¡£Ö÷¼üÒ»°ãÔÚ´´½¨±íµÄʱºòÖ¸¶¨£¬ÀýÈç¡°CREATE TABLE tablename ( [...], PRIMARY KEY (ÁеÄÁбí) ); ¡±¡£µ«ÊÇ£¬ÎÒÃÇÒ²¿ÉÒÔͨ¹ýÐ޸ıíµÄ·½Ê½¼ÓÈëÖ÷¼ü£¬ÀýÈç¡°ALTER TABLE tablename ADD PRIMARY KEY (ÁеÄÁбí); ¡±¡£Ã¿¸ö±íÖ»ÄÜÓÐÒ»¸öÖ÷¼ü¡£
¡¡¡¡
¡¡¡¡È«ÎÄË÷Òý
¡¡¡¡MySQL´Ó3.23.23°æ¿ªÊ¼Ö§³ÖÈ«ÎÄË÷ÒýºÍÈ«ÎļìË÷¡£ÔÚMySQLÖУ¬È«ÎÄË÷ÒýµÄË÷ÒýÀàÐÍΪFULLTEXT¡£È«ÎÄË÷Òý¿ÉÒÔÔÚVARCHAR»òÕßTEXTÀàÐ͵ÄÁÐÉÏ´´½¨¡£Ëü¿ÉÒÔͨ¹ýCREATE TABLEÃüÁî´´½¨£¬Ò²¿ÉÒÔͨ¹ýALTER TABLE»òCREATE INDEXÃüÁî´´½¨¡£¶ÔÓÚ´ó¹æÄ£µÄÊý¾Ý¼¯£¬Í¨¹ýALTER TABLE£¨»òÕßCREATE INDEX£©ÃüÁî´´½¨È«ÎÄË÷ÒýÒª±È°Ñ¼Ç¼²åÈë´øÓÐÈ«ÎÄË÷ÒýµÄ¿Õ±í¸ü¿ì¡£±¾ÎÄÏÂÃæµÄÌÖÂÛ²»ÔÙÉæ¼°È«ÎÄË÷Òý£¬ÒªÁ˽â¸ü¶àÐÅÏ¢£¬Çë²Î¼ûMySQL documentation¡£
¡¡¡¡
¡¡¡¡Èý¡¢µ¥ÁÐË÷ÒýÓë¶àÁÐË÷Òý
¡¡¡¡Ë÷Òý¿ÉÒÔÊǵ¥ÁÐË÷Òý£¬Ò²¿ÉÒÔÊǶàÁÐË÷Òý¡£ÏÂÃæÎÒÃÇͨ¹ý¾ßÌåµÄÀý×ÓÀ´ËµÃ÷ÕâÁ½ÖÖË÷ÒýµÄÇø±ð¡£¼ÙÉèÓÐÕâÑùÒ»¸öpeople±í£º
¡¡¡¡
¡¡¡¡CREATE TABLE people ( peopleid SMALLINT NOT NULL AUTO_INCREMENT, firstname CHAR(50) NOT NULL, lastname CHAR(50) NOT NULL, age SMALLINT NOT NULL, townid SMALLINT NOT NULL, PRIMARY KEY (peopleid) );
¡¡¡¡
¡¡¡¡ÏÂÃæÊÇÎÒÃDzåÈëµ½Õâ¸öpeople±íµÄÊý¾Ý£º
¡¡¡¡
¡¡¡¡Õâ¸öÊý¾ÝƬ¶ÎÖÐÓÐËĸöÃû×ÖΪ¡°Mikes¡±µÄÈË£¨ÆäÖÐÁ½¸öÐÕSullivans£¬Á½¸öÐÕMcConnells£©£¬ÓÐÁ½¸öÄêÁäΪ17ËêµÄÈË£¬»¹ÓÐÒ»¸öÃû×ÖÓëÖÚ²»Í¬µÄJoe Smith¡£
¡¡¡¡
¡¡¡¡Õâ¸ö±íµÄÖ÷ÒªÓÃ;ÊǸù¾ÝÖ¸¶¨µÄÓû§ÐÕ¡¢ÃûÒÔ¼°ÄêÁä·µ»ØÏàÓ¦µÄpeopleid¡£ÀýÈ磬ÎÒÃÇ¿ÉÄÜÐèÒª²éÕÒÐÕÃûΪMike Sullivan¡¢ÄêÁä17ËêÓû§µÄpeopleid£¨SQLÃüÁîΪSELECT peopleid FROM people WHERE firstname='Mike' AND lastname='Sullivan' AND age=17;£©¡£ÓÉÓÚÎÒÃDz»ÏëÈÃMySQLÿ´ÎÖ´Ðвéѯ¾ÍȥɨÃèÕû¸ö±í£¬ÕâÀïÐèÒª¿¼ÂÇÔËÓÃË÷Òý¡£
¡¡¡¡
¡¡¡¡Ê×ÏÈ£¬ÎÒÃÇ¿ÉÒÔ¿¼ÂÇÔÚµ¥¸öÁÐÉÏ´´½¨Ë÷Òý£¬±ÈÈçfirstname¡¢lastname»òÕßageÁС£Èç¹ûÎÒÃÇ´´½¨firstnameÁеÄË÷Òý£¨ALTER TABLE people ADD INDEX firstname (firstname);£©£¬MySQL½«Í¨¹ýÕâ¸öË÷ÒýѸËÙ°ÑËÑË÷·¶Î§ÏÞÖƵ½ÄÇЩfirstname='Mike'µÄ¼Ç¼£¬È»ºóÔÙÔÚÕâ¸ö¡°Öмä½á¹û¼¯¡±ÉϽøÐÐÆäËûÌõ¼þµÄËÑË÷£ºËüÊ×ÏÈÅųýÄÇЩlastname²»µÈÓÚ¡°Sullivan¡±µÄ¼Ç¼£¬È»ºóÅųýÄÇЩage²»µÈÓÚ17µÄ¼Ç¼¡£µ±¼Ç¼Âú×ãËùÓÐËÑË÷Ìõ¼þÖ®ºó£¬MySQL¾Í·µ»Ø×îÖÕµÄËÑË÷½á¹û¡£
¡¡¡¡
¡¡¡¡ÓÉÓÚ½¨Á¢ÁËfirstnameÁеÄË÷Òý£¬ÓëÖ´ÐбíµÄÍêȫɨÃèÏà±È£¬MySQLµÄЧÂÊÌá¸ßÁ˺ܶ࣬µ«ÎÒÃÇÒªÇóMySQLɨÃèµÄ¼Ç¼ÊýÁ¿ÈÔ¾ÉÔ¶Ô¶³¬¹ýÁËʵ¼ÊËùÐèÒªµÄ¡£ËäÈ»ÎÒÃÇ¿ÉÒÔɾ³ýfirstnameÁÐÉϵÄË÷Òý£¬ÔÙ´´½¨lastname»òÕßageÁеÄË÷Òý£¬µ«×ܵؿ´À´£¬²»ÂÛÔÚÄĸöÁÐÉÏ´´½¨Ë÷ÒýËÑË÷ЧÂÊÈÔ¾ÉÏàËÆ¡£
¡¡¡¡
¡¡¡¡ÎªÁËÌá¸ßËÑË÷ЧÂÊ£¬ÎÒÃÇÐèÒª¿¼ÂÇÔËÓöàÁÐË÷Òý¡£Èç¹ûΪfirstname¡¢lastnameºÍageÕâÈý¸öÁд´½¨Ò»¸ö¶àÁÐË÷Òý£¬MySQLÖ»ÐèÒ»´Î¼ìË÷¾ÍÄܹ»ÕÒ³öÕýÈ·µÄ½á¹û£¡ÏÂÃæÊÇ´´½¨Õâ¸ö¶àÁÐË÷ÒýµÄSQLÃüÁ
¡¡¡¡
¡¡¡¡ALTER TABLE people ADD INDEX fname_lname_age (firstname,lastname,age);
¡¡¡¡
¡¡¡¡ÓÉÓÚË÷ÒýÎļþÒÔB-Ê÷¸ñʽ±£´æ£¬MySQLÄܹ»Á¢¼´×ªµ½ºÏÊʵÄfirstname£¬È»ºóÔÙתµ½ºÏÊʵÄlastname£¬×îºóתµ½ºÏÊʵÄage¡£ÔÚûÓÐɨÃèÊý¾ÝÎļþÈκÎÒ»¸ö¼Ç¼µÄÇé¿öÏ£¬MySQL¾ÍÕýÈ·µØÕÒ³öÁËËÑË÷µÄÄ¿±ê¼Ç¼£¡
¡¡¡¡
¡¡¡¡ÄÇô£¬Èç¹ûÔÚfirstname¡¢lastname¡¢ageÕâÈý¸öÁÐÉϷֱ𴴽¨µ¥ÁÐË÷Òý£¬Ð§¹ûÊÇ·ñºÍ´´½¨Ò»¸öfirstname¡¢lastname¡¢ageµÄ¶àÁÐË÷ÒýÒ»ÑùÄØ£¿´ð°¸ÊÇ·ñ¶¨µÄ£¬Á½ÕßÍêÈ«²»Í¬¡£µ±ÎÒÃÇÖ´ÐвéѯµÄʱºò£¬MySQLÖ»ÄÜʹÓÃÒ»¸öË÷Òý¡£Èç¹ûÄãÓÐÈý¸öµ¥ÁеÄË÷Òý£¬MySQL»áÊÔͼѡÔñÒ»¸öÏÞÖÆ×îÑϸñµÄË÷Òý¡£µ«ÊÇ£¬¼´Ê¹ÊÇÏÞÖÆ×îÑϸñµÄµ¥ÁÐË÷Òý£¬ËüµÄÏÞÖÆÄÜÁ¦Ò²¿Ï¶¨Ô¶Ô¶µÍÓÚfirstname¡¢lastname¡¢ageÕâÈý¸öÁÐÉϵĶàÁÐË÷Òý¡£
¡¡¡¡
¡¡¡¡ËÄ¡¢×î×óǰ׺
¡¡¡¡¶àÁÐË÷Òý»¹ÓÐÁíÍâÒ»¸öÓŵ㣬Ëüͨ¹ý³ÆΪ×î×óǰ׺£¨Leftmost Prefixing£©µÄ¸ÅÄîÌåÏÖ³öÀ´¡£¼ÌÐø¿¼ÂÇÇ°ÃæµÄÀý×Ó£¬ÏÖÔÚÎÒÃÇÓÐÒ»¸öfirstname¡¢lastname¡¢ageÁÐÉϵĶàÁÐË÷Òý£¬ÎÒÃdzÆÕâ¸öË÷ÒýΪfname_lname_age¡£µ±ËÑË÷Ìõ¼þÊÇÒÔϸ÷ÖÖÁеÄ×éºÏʱ£¬MySQL½«Ê¹ÓÃfname_lname_ageË÷Òý£º
¡¡¡¡
¡¡¡¡firstname£¬lastname£¬age
¡¡¡¡firstname£¬lastname
¡¡¡¡firstname
¡¡¡¡´ÓÁíÒ»·½ÃæÀí½â£¬ËüÏ൱ÓÚÎÒÃÇ´´½¨ÁË(firstname£¬lastname£¬age)¡¢(firstname£¬lastname)ÒÔ¼°(firstname)ÕâЩÁÐ×éºÏÉϵÄË÷Òý¡£ÏÂÃæÕâЩ²éѯ¶¼Äܹ»Ê¹ÓÃÕâ¸öfname_lname_ageË÷Òý£º
¡¡¡¡
¡¡¡¡SELECT peopleid FROM people WHERE firstname='Mike' AND lastname='Sullivan' AND age='17'; SELECT peopleid FROM people WHERE firstname='Mike' AND lastname='Sullivan'; SELECT peopleid FROM people WHERE firstname='Mike'; The following queries cannot use the index at all: SELECT peopleid FROM people WHERE lastname='Sullivan'; SELECT peopleid FROM people WHERE age='17'; SELECT peopleid FROM people WHERE lastname='Sullivan' AND age='17';
¡¡¡¡
¡¡¡¡Î塢ѡÔñË÷ÒýÁÐ
¡¡¡¡ÔÚÐÔÄÜÓÅ»¯¹ý³ÌÖУ¬Ñ¡ÔñÔÚÄÄЩÁÐÉÏ´´½¨Ë÷ÒýÊÇ×îÖØÒªµÄ²½ÖèÖ®Ò»¡£¿ÉÒÔ¿¼ÂÇʹÓÃË÷ÒýµÄÖ÷ÒªÓÐÁ½ÖÖÀàÐ͵ÄÁУºÔÚWHERE×Ó¾äÖгöÏÖµÄÁУ¬ÔÚjoin×Ó¾äÖгöÏÖµÄÁС£Çë¿´ÏÂÃæÕâ¸ö²éѯ£º
¡¡¡¡
¡¡¡¡SELECT age ## ²»Ê¹ÓÃË÷Òý
¡¡¡¡FROM people WHERE firstname='Mike' ## ¿¼ÂÇʹÓÃË÷Òý
¡¡¡¡AND lastname='Sullivan' ## ¿¼ÂÇʹÓÃË÷Òý
¡¡¡¡
¡¡¡¡Õâ¸ö²éѯÓëÇ°ÃæµÄ²éѯÂÔÓв»Í¬£¬µ«ÈÔÊôÓÚ¼òµ¥²éѯ¡£ÓÉÓÚageÊÇÔÚSELECT²¿·Ö±»ÒýÓã¬MySQL²»»áÓÃËüÀ´ÏÞÖÆÁÐÑ¡Ôñ²Ù×÷¡£Òò´Ë£¬¶ÔÓÚÕâ¸ö²éѯÀ´Ëµ£¬´´½¨ageÁеÄË÷ÒýûÓÐʲô±ØÒª¡£ÏÂÃæÊÇÒ»¸ö¸ü¸´ÔÓµÄÀý×Ó£º
¡¡¡¡
¡¡¡¡SELECT people.age, ##²»Ê¹ÓÃË÷Òý
¡¡¡¡town.name ##²»Ê¹ÓÃË÷Òý
¡¡¡¡FROM people LEFT JOIN town ON
¡¡¡¡people.townid=town.townid ##¿¼ÂÇʹÓÃË÷Òý
¡¡¡¡WHERE firstname='Mike' ##¿¼ÂÇʹÓÃË÷Òý
¡¡¡¡AND lastname='Sullivan' ##¿¼ÂÇʹÓÃË÷Òý
¡¡¡¡
¡¡¡¡ÓëÇ°ÃæµÄÀý×ÓÒ»Ñù£¬ÓÉÓÚfirstnameºÍlastname³öÏÖÔÚWHERE×Ó¾äÖУ¬Òò´ËÕâÁ½¸öÁÐÈÔ¾ÉÓд´½¨Ë÷ÒýµÄ±ØÒª¡£³ý´ËÖ®Í⣬ÓÉÓÚtown±íµÄtownidÁгöÏÖÔÚjoin×Ó¾äÖУ¬Òò´ËÎÒÃÇÐèÒª¿¼ÂÇ´´½¨¸ÃÁеÄË÷Òý¡£
¡¡¡¡
¡¡¡¡ÄÇô£¬ÎÒÃÇÊÇ·ñ¿ÉÒÔ¼òµ¥µØÈÏΪӦ¸ÃË÷ÒýWHERE×Ó¾äºÍjoin×Ó¾äÖгöÏÖµÄÿһ¸öÁÐÄØ£¿²î²»¶àÈç´Ë£¬µ«²¢²»ÍêÈ«¡£ÎÒÃÇ»¹±ØÐ뿼Âǵ½¶ÔÁнøÐбȽϵIJÙ×÷·ûÀàÐÍ¡£MySQLÖ»ÓжÔÒÔϲÙ×÷·û²ÅʹÓÃË÷Òý£º<£¬<=£¬=£¬>£¬>=£¬BETWEEN£¬IN£¬ÒÔ¼°Ä³Ð©Ê±ºòµÄLIKE¡£¿ÉÒÔÔÚLIKE²Ù×÷ÖÐʹÓÃË÷ÒýµÄÇéÐÎÊÇÖ¸ÁíÒ»¸ö²Ù×÷Êý²»ÊÇÒÔͨÅä·û£¨%»òÕß_£©¿ªÍ·µÄÇéÐΡ£ÀýÈ磬¡°SELECT peopleid FROM people WHERE firstname LIKE 'Mich%';¡±Õâ¸ö²éѯ½«Ê¹ÓÃË÷Òý£¬µ«¡°SELECT peopleid FROM people WHERE firstname LIKE '%ike';¡±Õâ¸ö²éѯ²»»áʹÓÃË÷Òý¡£
¡¡¡¡
¡¡¡¡Áù¡¢·ÖÎöË÷ÒýЧÂÊ
¡¡¡¡ÏÖÔÚÎÒÃÇÒѾ­ÖªµÀÁËһЩÈçºÎÑ¡ÔñË÷ÒýÁеÄ֪ʶ£¬µ«»¹ÎÞ·¨ÅжÏÄÄÒ»¸ö×îÓÐЧ¡£MySQLÌṩÁËÒ»¸öÄÚ½¨µÄSQLÃüÁî°ïÖúÎÒÃÇÍê³ÉÕâ¸öÈÎÎñ£¬Õâ¾ÍÊÇEXPLAINÃüÁî¡£EXPLAINÃüÁîµÄÒ»°ãÓï·¨ÊÇ£ºEXPLAIN ¡£Äã¿ÉÒÔÔÚMySQLÎĵµÕÒµ½ÓйظÃÃüÁîµÄ¸ü¶à˵Ã÷¡£ÏÂÃæÊÇÒ»¸öÀý×Ó£º
¡¡¡¡
¡¡¡¡EXPLAIN SELECT peopleid FROM people WHERE firstname='Mike' AND lastname='Sullivan' AND age='17';
¡¡¡¡
¡¡¡¡Õâ¸öÃüÁ·µ»ØÏÂÃæÕâÖÖ·ÖÎö½á¹û£º
¡¡¡¡
¡¡¡¡ÏÂÃæÎÒÃǾÍÀ´¿´¿´Õâ¸öEXPLAIN·ÖÎö½á¹ûµÄº¬Òå¡£
¡¡¡¡
¡¡¡¡
¡¡¡¡table£ºÕâÊDZíµÄÃû×Ö¡£
¡¡¡¡type£ºÁ¬½Ó²Ù×÷µÄÀàÐÍ¡£ÏÂÃæÊÇMySQLÎĵµ¹ØÓÚrefÁ¬½ÓÀàÐ͵Ä˵Ã÷£º
¡¡¡¡
¡¡¡¡¡°¶ÔÓÚÿһÖÖÓëÁíÒ»¸ö±íÖмǼµÄ×éºÏ£¬MySQL½«´Óµ±Ç°µÄ±í¶ÁÈ¡ËùÓдøÓÐÆ¥ÅäË÷ÒýÖµµÄ¼Ç¼¡£Èç¹ûÁ¬½Ó²Ù×÷ֻʹÓüüµÄ×î×óǰ׺£¬»òÕßÈç¹û¼ü²»ÊÇUNIQUE»òPRIMARY KEYÀàÐÍ£¨»»¾ä»°Ëµ£¬Èç¹ûÁ¬½Ó²Ù×÷²»Äܸù¾Ý¼üֵѡÔñ³öΨһÐУ©£¬ÔòMySQLʹÓÃrefÁ¬½ÓÀàÐÍ¡£Èç¹ûÁ¬½Ó²Ù×÷ËùÓõļüֻƥÅäÉÙÁ¿µÄ¼Ç¼£¬ÔòrefÊÇÒ»ÖֺõÄÁ¬½ÓÀàÐÍ¡£¡±
¡¡¡¡
¡¡¡¡ÔÚ±¾ÀýÖУ¬ÓÉÓÚË÷Òý²»ÊÇUNIQUEÀàÐÍ£¬refÊÇÎÒÃÇÄܹ»µÃµ½µÄ×îºÃÁ¬½ÓÀàÐÍ¡£
¡¡¡¡
¡¡¡¡Èç¹ûEXPLAINÏÔʾÁ¬½ÓÀàÐÍÊÇ¡°ALL¡±£¬¶øÇÒÄã²¢²»Ïë´Ó±íÀïÃæÑ¡Ôñ³ö´ó¶àÊý¼Ç¼£¬ÄÇôMySQLµÄ²Ù×÷ЧÂʽ«·Ç³£µÍ£¬ÒòΪËüҪɨÃèÕû¸ö±í¡£Äã¿ÉÒÔ¼ÓÈë¸ü¶àµÄË÷ÒýÀ´½â¾öÕâ¸öÎÊÌâ¡£Ô¤Öª¸ü¶àÐÅÏ¢£¬Çë²Î¼ûMySQLµÄÊÖ²á˵Ã÷¡£
¡¡¡¡
¡¡¡¡possible_keys£º
¡¡¡¡¿ÉÄÜ¿ÉÒÔÀûÓõÄË÷ÒýµÄÃû×Ö¡£ÕâÀïµÄË÷ÒýÃû×ÖÊÇ´´½¨Ë÷Òýʱָ¶¨µÄË÷Òýêdzƣ»Èç¹ûË÷ÒýûÓÐêdzƣ¬ÔòĬÈÏÏÔʾµÄÊÇË÷ÒýÖеÚÒ»¸öÁеÄÃû×Ö£¨ÔÚ±¾ÀýÖУ¬ËüÊÇ¡°firstname¡±£©¡£Ä¬ÈÏË÷ÒýÃû×ֵĺ¬ÒåÍùÍù²»ÊǺÜÃ÷ÏÔ¡£
¡¡¡¡
¡¡¡¡Key£º
¡¡¡¡ËüÏÔʾÁËMySQLʵ¼ÊʹÓõÄË÷ÒýµÄÃû×Ö¡£Èç¹ûËüΪ¿Õ£¨»òNULL£©£¬ÔòMySQL²»Ê¹ÓÃË÷Òý¡£
¡¡¡¡
¡¡¡¡key_len£º
¡¡¡¡Ë÷ÒýÖб»Ê¹Óò¿·ÖµÄ³¤¶È£¬ÒÔ×ֽڼơ£ÔÚ±¾ÀýÖУ¬key_lenÊÇ102£¬ÆäÖÐfirstnameÕ¼50×Ö½Ú£¬lastnameÕ¼50×Ö½Ú£¬ageÕ¼2×Ö½Ú¡£Èç¹ûMySQLֻʹÓÃË÷ÒýÖеÄfirstname²¿·Ö£¬Ôòkey_len½«ÊÇ50¡£
¡¡¡¡
¡¡¡¡ref£º
¡¡¡¡ËüÏÔʾµÄÊÇÁеÄÃû×Ö£¨»òµ¥´Ê¡°const¡±£©£¬MySQL½«¸ù¾ÝÕâЩÁÐÀ´Ñ¡ÔñÐС£ÔÚ±¾ÀýÖУ¬MySQL¸ù¾ÝÈý¸ö³£Á¿Ñ¡ÔñÐС£
¡¡¡¡
¡¡¡¡rows£º
¡¡¡¡MySQLËùÈÏΪµÄËüÔÚÕÒµ½ÕýÈ·µÄ½á¹û֮ǰ±ØÐëɨÃèµÄ¼Ç¼Êý¡£ÏÔÈ»£¬ÕâÀï×îÀíÏëµÄÊý×Ö¾ÍÊÇ1¡£
¡¡¡¡
¡¡¡¡Extra£º
¡¡¡¡ÕâÀï¿ÉÄܳöÏÖÐí¶à²»Í¬µÄÑ¡ÏÆäÖдó¶àÊý½«¶Ô²éѯ²úÉú¸ºÃæÓ°Ïì¡£ÔÚ±¾ÀýÖУ¬MySQLÖ»ÊÇÌáÐÑÎÒÃÇËü½«ÓÃWHERE×Ó¾äÏÞÖÆËÑË÷½á¹û¼¯¡£
¡¡¡¡
¡¡¡¡Æß¡¢Ë÷ÒýµÄȱµã
¡¡¡¡µ½Ä¿Ç°ÎªÖ¹£¬ÎÒÃÇÌÖÂ۵Ķ¼ÊÇË÷ÒýµÄÓŵ㡣ÊÂʵÉÏ£¬Ë÷ÒýÒ²ÊÇÓÐȱµãµÄ¡£
¡¡¡¡
¡¡¡¡Ê×ÏÈ£¬Ë÷ÒýÒªÕ¼ÓôÅÅ̿ռ䡣ͨ³£Çé¿öÏ£¬Õâ¸öÎÊÌâ²»ÊǺÜÍ»³ö¡£µ«ÊÇ£¬Èç¹ûÄã´´½¨Ã¿Ò»ÖÖ¿ÉÄÜÁÐ×éºÏµÄË÷Òý£¬Ë÷ÒýÎļþÌå»ýµÄÔö³¤ËٶȽ«Ô¶Ô¶³¬¹ýÊý¾ÝÎļþ¡£Èç¹ûÄãÓÐÒ»¸öºÜ´óµÄ±í£¬Ë÷ÒýÎļþµÄ´óС¿ÉÄÜ´ïµ½²Ù×÷ϵͳÔÊÐíµÄ×î´óÎļþÏÞÖÆ¡£
¡¡¡¡
¡¡¡¡µÚ¶þ£¬¶ÔÓÚÐèҪдÈëÊý¾ÝµÄ²Ù×÷£¬±ÈÈçDELETE¡¢UPDATEÒÔ¼°INSERT²Ù×÷£¬Ë÷Òý»á½µµÍËüÃǵÄËٶȡ£ÕâÊÇÒòΪMySQL²»½öÒª°Ñ¸Ä¶¯Êý¾ÝдÈëÊý¾ÝÎļþ£¬¶øÇÒËü»¹Òª°ÑÕâЩ¸Ä¶¯Ð´ÈëË÷ÒýÎļþ¡£
¡¡¡¡
¡¡¡¡¡¾½áÊøÓï¡¿ÔÚ´óÐÍÊý¾Ý¿âÖУ¬Ë÷ÒýÊÇÌá¸ßËٶȵÄÒ»¸ö¹Ø¼üÒòËØ¡£²»¹Ü±íµÄ½á¹¹ÊǶàô¼òµ¥£¬Ò»´Î500000ÐеıíɨÃè²Ù×÷ÎÞÂÛÈçºÎ²»»á¿ì¡£Èç¹ûÄãµÄÍøÕ¾ÉÏÒ²ÓÐÕâÖÖ´ó¹æÄ£µÄ±í£¬ÄÇôÄãȷʵӦ¸Ã»¨Ð©Ê±¼äÈ¥·ÖÎö¿ÉÒÔ²ÉÓÃÄÄЩË÷Òý£¬²¢¿¼ÂÇÊÇ·ñ¿ÉÒÔ¸Äд²éѯÒÔÓÅ»¯Ó¦Óá£ÒªÁ˽â¸ü¶àÐÅÏ¢£¬Çë²Î¼ûMySQL manual¡£ÁíÍâ×¢Ò⣬±¾Îļٶ¨ÄãËùʹÓõÄMySQLÊÇ3.23°æ£¬²¿·Ö²éѯ²»ÄÜÔÚ3.22°æMySQLÉÏÖ´ÐС£
ÎÄÕÂÆÀÂÛ

¹²ÓÐ 4 ÌõÆÀÂÛ

  1. csbinghu ÓÚ 2007-05-18 21:10:44·¢±í:

    :ha3nd

  2. eoboot ÓÚ 2005-10-13 00:34:06·¢±í:

    ¸Ðл·ÖÏí¼¼Êõ

  3. root ÓÚ 2005-08-06 00:39:58·¢±í:

    ²»´í£¬ºÃÎÄÕÂ

  4. ºÎ¸ç ÓÚ 2005-07-08 00:16:56·¢±í:

    Ö§³Ö£¬¶¥