MySQLµÄË÷ÒýÓÅ»¯·ÖÎö(Ò»)
Ò»¡¢SQL·ÖÎö
ÐÔÄÜϽµ¡¢SQLÂý¡¢Ö´ÐÐʱ¼ä³¤¡¢µÈ´ýʱ¼ä³¤
- ²éѯÓï¾äдµÄ²î
- Ë÷ÒýʧЧ¹ØÁª²éѯ̫¶àjoin(Éè¼ÆÈ±ÏÝ)
- µ¥ÖµË÷Òý£ºÔÚuser±íÖиønameÊôÐÔ´´½¨Ë÷Òý£¬create index idx_name on user(name);
- ¸´ºÏË÷Òý£ºÔÚuser±íÖиøname¡¢emailÊôÐÔ´´½¨Ë÷Òý£¬create index idx_name_email on user(name,email);
- ·þÎñÆ÷µ÷Óż°¸÷¸ö²ÎÊýÉèÖÃ(»º³å¡¢Ïß³ÌÊýµÈ)
¶þ£¬join²éѯ
1£¬SQLÖ´ÐÐ˳Ðò
¡¡¡¡a£©ÊÖдSQL
¡¡¡¡b£©»ú¶Á
¡¡¡¡c£©×ܽá
2£¬JOIN²éѯ
¡¡¡¡
a£©½¨±íÓï¾ä

CREATE TABLE tbl_dept( id INT(11) NOT NULL AUTO_INCREMENT, deptName VARCHAR(30) DEFAULT NULL, locAdd VARCHAR(40) DEFAULT NULL, PRIMARY KEY(id) )ENGINE=INNODB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8; CREATE TABLE tbl_emp ( id INT(11) NOT NULL AUTO_INCREMENT, NAME VARCHAR(20) DEFAULT NULL, deptId INT(11) DEFAULT NULL, PRIMARY KEY (id), KEY fk_dept_Id (deptId) #CONSTRAINT 'fk_dept_Id' foreign key ('deptId') references 'tbl_dept'('Id') )ENGINE=INNODB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8; INSERT INTO tbl_dept(deptName,locAdd) VALUES('RD',11); INSERT INTO tbl_dept(deptName,locAdd) VALUES('HR',12); INSERT INTO tbl_dept(deptName,locAdd) VALUES('MK',13); INSERT INTO tbl_dept(deptName,locAdd) VALUES('MIS',14); INSERT INTO tbl_dept(deptName,locAdd) VALUES('FD',15); INSERT INTO tbl_emp(NAME,deptId) VALUES('z3',1); INSERT INTO tbl_emp(NAME,deptId) VALUES('z4',1); INSERT INTO tbl_emp(NAME,deptId) VALUES('z5',1); INSERT INTO tbl_emp(NAME,deptId) VALUES('w5',2); INSERT INTO tbl_emp(NAME,deptId) VALUES('w6',2); INSERT INTO tbl_emp(NAME,deptId) VALUES('s7',3); INSERT INTO tbl_emp(NAME,deptId) VALUES('s8',4); INSERT INTO tbl_emp(NAME,deptId) VALUES('s9',51);
b£©Âú×ãÌõ¼þµÄjoinÓï¾ä
#×óÁ¬½Ó SELECT * FROM tbl_dept t1 LEFT JOIN tbl_emp t2 on t1.id = t2.deptId; #ÓÒÁ¬½Ó SELECT * FROM tbl_dept t1 RIGHT JOIN tbl_emp t2 on t1.id = t2.deptId; #ÄÚÁ¬½Ó(½»¼¯) SELECT * FROM tbl_dept t1 INNER JOIN tbl_emp t2 on t1.id = t2.deptId; #×óÁ¬½Ó(ֻȡA¶ÀÓеÄ) SELECT * FROM tbl_dept t1 LEFT JOIN tbl_emp t2 on t1.id = t2.deptId WHERE t2.deptId is NULL; #ÓÒÁ¬½Ó(ֻȡB¶ÀÓеÄ) SELECT * FROM tbl_dept t1 RIGHT JOIN tbl_emp t2 on t1.id = t2.deptId WHERE t1.id is NULL; #AºÍB¾ùÓÐ SELECT * FROM tbl_dept t1 LEFT JOIN tbl_emp t2 on t1.id = t2.deptId UNION SELECT * FROM tbl_dept t1 RIGHT JOIN tbl_emp t2 on t1.id = t2.deptId; #AºÍB¾ùÊǶÀÓÐ SELECT * FROM tbl_dept t1 LEFT JOIN tbl_emp t2 on t1.id = t2.deptId WHERE t2.deptId is NULL UNION SELECT * FROM tbl_dept t1 RIGHT JOIN tbl_emp t2 on t1.id = t2.deptId WHERE t1.id is NULL;
Èý¡¢Ë÷Òý
1£¬Ë÷ÒýÊÇʲô
- Ë÷Òý(Index)ÊǰïÖúMySQL¸ßЧ»ñÈ¡Êý¾ÝµÄÊý¾Ý½á¹¹¡£
- ÅźÃÐòµÄ¿ìËÙ²éÕÒÊý¾Ý½á¹¹£¬¼´Ë÷Òý = ÅÅÐò + ²éÕÒ
- Ò»°ãÀ´ËµË÷Òý±¾ÉíÕ¼ÓÃÄÚ´æ¿Õ¼äÒ²ºÜ´ó£¬²»¿ÉÄÜÈ«²¿´æ´¢ÔÚÄÚ´æÖУ¬Òò´ËË÷ÒýÍùÍùÒÔÎļþÐÎʽ´æ´¢ÔÚÓ²ÅÌÉÏ
- ¾Û¼¯Ë÷Òý£¬´365betÌåÓýÔÚÏߪË÷Òý£¬¸²¸ÇË÷Òý£¬¸´ºÏË÷Òý£¬Ç°×ºË÷Òý£¬Î¨Ò»Ë÷ÒýĬÈ϶¼ÊÇʹÓÃB+Ê÷Ë÷Òý£¬Í³³ÆË÷Òý¡£µ±È»£¬³ýÁËB+Ê÷ÕâÖÖÀàÐ͵ÄË÷ÒýÖ®Í⣬»¹ÓйþÏ£Ë÷Òý(hash index)µÈ¡£
2£¬Ë÷ÒýÔÀí
3£¬Ë÷ÒýÓÅÁÓÊÆ
a)Ë÷ÒýµÄÓÅÊÆ
- Ë÷ÒýÄÜÌá¸ßÊý¾Ý¼ìË÷µÄЧÂÊ£¬½µµÍÊý¾Ý¿âµÄIO³É±¾
- ͨ¹ý´´½¨Î¨Ò»ÐÔË÷Òý£¬¿ÉÒÔ±£Ö¤Êý¾Ý¿â±íÖÐÿһÐÐÊý¾ÝµÄΨһÐÔ
- ÔÚʹÓ÷Ö×éºÍÅÅÐò×Ӿ佸ÐÐÊý¾Ý¼ìË÷ʱ£¬Í¬Ñù¿ÉÒÔÏÔÖø¼õÉÙ²éѯÖзÖ×éºÍÅÅÐòµÄʱ¼ä
- ¼ÓËÙÁ½¸ö±íÖ®¼äµÄÁ¬½Ó£¬Ò»°ãÔÚÍâ¼üÉÏ´´½¨Ë÷Òý
b)ÁÓÊÆ
- ʵ¼ÊÉÏË÷ÒýÒ²ÊÇÒ»ÕÅ±í£¬¸Ã±í±£´æÁËÖ÷¼üºÍË÷Òý×ֶΣ¬²¢Ö¸ÏòʵÌå±íµÄ¼Ç¼£¬365betÌåÓýÔÚÏßË÷ÒýÁÐÒ²ÊÇÒªÕ¼ÓÿռäµÄ
- ËäÈ»Ë÷Òý´ó´óÌá¸ßÁ˲éѯËÙ¶È£¬Í¬Ê±È´Ò²»á½µµÍ¸üбíµÄËÙ¶È£¬Èç¶Ô±íinsert¡¢updateºÍdelete¡£ÒòΪ¸üбíʱ£¬²»½öÒª±£´æÊý¾Ý£¬»¹Òª±£´æÒ»ÏÂË÷ÒýÎļþ¡£
- Ë÷ÒýÖ»ÊÇÌá¸ßЧÂʵÄÒ»¸öÒòËØ£¬Èç¹ûÄãµÄMySQLÓдóÊý¾ÝÁ¿µÄ±í£¬¾ÍÐèÒª»¨Ê±¼äÑо¿½¨Á¢ÓÅÐãµÄË÷Òý£¬»òÓÅ»¯²éѯÓï¾ä
4£¬MySQLË÷Òý·ÖÀà
- ÆÕͨË÷Òý£ºÊÇ×î»ù±¾µÄË÷Òý£¬ËüûÓÐÈκÎÏÞÖÆ£¬¼´Ò»¸öË÷ÒýÖ»°üº¬µ¥¸öÁУ¬Ò»¸ö±í¿ÉÒÔÓжà¸öµ¥ÁÐË÷Òý£»½¨ÒéÒ»ÕűíË÷Òý²»Òª³¬¹ý5¸ö£¬ÓÅÏÈ¿¼ÂǸ´ºÏË÷Òý
- ΨһË÷Òý£ºÓëÇ°ÃæµÄÆÕͨË÷ÒýÀàËÆ£¬²»Í¬µÄ¾ÍÊÇ£ºË÷ÒýÁеÄÖµ±ØÐëΨһ£¬µ«ÔÊÐíÓпÕÖµ¡£Èç¹ûÊÇ×éºÏË÷Òý£¬ÔòÁÐÖµµÄ×éºÏ±ØÐëΨһ
- Ö÷¼üË÷Òý£ºÊÇ365ÌåÓýÍ¶×¢ÌØÊâµÄΨһË÷Òý£¬Ò»¸ö±íÖ»ÄÜÓÐÒ»¸öÖ÷¼ü£¬²»ÔÊÐíÓпÕÖµ¡£Ò»°ãÊÇÔÚ½¨±íµÄʱºòͬʱ´´½¨Ö÷¼üË÷Òý
- ¸´ºÏË÷Òý£ºÖ¸¶à¸ö×Ö¶ÎÉÏ´´½¨µÄË÷Òý£¬Ö»ÓÐÔÚ²éѯÌõ¼þÖÐʹÓÃÁË´´½¨Ë÷ÒýʱµÄµÚÒ»¸ö×ֶΣ¬Ë÷Òý²Å»á±»Ê¹Óá£Ê¹ÓÃ×éºÏË÷Òýʱ×ñÑ×î×óǰ׺¼¯ºÏ
- È«ÎÄË÷Òý£ºÖ÷ÒªÓÃÀ´²éÕÒ365ÌåÓýͶעÖеĹؼü×Ö£¬¶ø²»ÊÇÖ±½ÓÓëË÷ÒýÖеÄÖµÏà±È½Ï¡£fulltextË÷Òý¸úÆäËüË÷Òý´ó²»Ïàͬ£¬Ëü¸üÏñÊÇÒ»¸öËÑË÷ÒýÇæ£¬¶ø²»ÊǼòµ¥µÄwhereÓï¾äµÄ²ÎÊýÆ¥Åä
5£¬MySQLË÷ÒýÓï·¨
- ´´½¨Ë÷Òý
CREATE [UNIQUE] INDEX index_name ON mytable(column_name(length));
- ɾ³ýË÷Òý
DROP INDEX index_name ON mytable;
- ²é¿´Ë÷Òý(
\G
365ÌåÓýͶע½«²éѯµ½µÄºáÏò±í¸ñ×ÝÏòÊä³ö£¬·½±ãÔĶÁ)
SHOW INDEX FROM table_name\G
- ²ÉÓÃalter·½Ê½Ìí¼ÓË÷Òý
#¸ÃÓï¾äÌí¼ÓÒ»¸öÖ÷¼ü£¬ÕâÒâζ×ÅË÷ÒýÖµ±ØÐëÊÇΨһµÄ£¬ÇÒ²»ÄÜΪNULL¡£ ALTER TABLE tbl_name ADD PRIMARY KEY(column_list) #ÕâÌõÓï¾ä´´½¨Ë÷ÒýµÄÖµ±ØÐëÊÇΨһµÄ£¨³ýÁËNULLÍ⣬NULL¿ÉÄÜ»á³öÏÖ¶à´Î£© ALTER TABLE tbl_name ADD UNIQUE index_name(column_list) #Ìí¼ÓÆÕͨË÷Òý£¬Ë÷ÒýÖµ¿É³öÏÖ¶à´Î¡£ ALTER TABLE tbl_name ADD INDEX index_name(column_list) #¸ÃÓï¾äÖ¸¶¨ÁËË÷ÒýΪFULLTEXT£¬ÓÃÓÚÈ«ÎÄË÷Òý¡£ ALTER TABLE tbl_name ADD FULLTEXT index_name(column_list)
6£¬MySQLµÄË÷Òý½á¹¹
¡¡¡¡ÏêÇé¿É²é¿´£º¶à·²éÕÒÊ÷(B-Tree£¬B+Tree£¬B*Tree)
a£©B-TreeÓëB+TreeµÄÇø±ð
¡¡¡¡B-Ê÷µÄ¹Ø¼ü×Ö£¨Êý¾ÝÏºÍ¼Ç¼ÊÇ·ÅÔÚÒ»ÆðµÄ£» B+Ê÷µÄ·ÇÒ¶×Ó½ÚµãÖÐÖ»Óйؼü×ÖºÍÖ¸ÏòÏÂÒ»¸ö½ÚµãµÄË÷Òý£¬ ¼Ç¼ֻ·ÅÔÚÒ¶×Ó½ÚµãÖС£
b£©B+Tree Óë BTree µÄ²éÕÒ¹ý³Ì
- ÔÚ B Ê÷ÖУ¬ Ô½¿¿½ü¸ù½ÚµãµÄ¼Ç¼²éÕÒʱ¼äÔ½¿ì£¬ Ö»ÒªÕÒµ½¹Ø¼ü×Ö¼´¿ÉÈ·¶¨¼Ç¼µÄ´æÔÚ£» ¶ø B+ Ê÷ÖÐ365ÌåÓýͶע¼Ç¼µÄ²éÕÒʱ¼ä»ù±¾ÊÇÒ»ÑùµÄ£¬ ¶¼ÐèÒª´Ó¸ù½Úµã×ßµ½Ò¶×ӽڵ㣬 ¶øÇÒÔÚÒ¶×Ó½ÚµãÖл¹ÒªÔٱȽϹؼü×Ö¡£
- ´ÓÕâ¸ö½Ç¶È¿´ B Ê÷µÄÐÔÄܺÃÏñÒª±È B+ Ê÷ºÃ£¬ ¶øÔÚʵ¼ÊÓ¦ÓÃÖÐÈ´ÊÇ B+ Ê÷µÄÐÔÄÜÒªºÃЩ¡£ ÒòΪ B+ Ê÷µÄ·ÇÒ¶×ӽڵ㲻´æ·Åʵ¼ÊµÄÊý¾Ý£¬ÕâÑù365ÌåÓýͶע½Úµã¿ÉÈÝÄɵÄÔªËØ¸öÊý±È B Ê÷¶à£¬ Ê÷¸ß±È B Ê÷С£¬ ÕâÑù´øÀ´µÄºÃ´¦ÊǼõÉÙ´ÅÅÌ·ÃÎÊ´ÎÊý¡£
- ¾¡¹Ü B+ Ê÷ÕÒµ½Ò»¸ö¼Ç¼ËùÐèµÄ±È½Ï´ÎÊýÒª±È B Ê÷¶à£¬ µ«ÊÇÒ»´Î´ÅÅÌ·ÃÎʵÄʱ¼äÏ൱ÓڳɰÙÉÏǧ´ÎÄÚ´æ±È½ÏµÄʱ¼ä£¬ Òò´Ëʵ¼ÊÖÐB+ Ê÷µÄÐÔÄÜ¿ÉÄÜ»¹»áºÃЩ£¬ ¶øÇÒ B+Ê÷µÄÒ¶×Ó½ÚµãʹÓÃÖ¸ÕëÁ¬½ÓÔÚÒ»Æð£¬ ·½±ã˳Ðò±éÀú£¨·¶Î§ËÑË÷£©£¬ ÕâÒ²ÊǺܶàÊý¾Ý¿âºÍÎļþϵͳʹÓà B+Ê÷µÄÔµ¹Ê¡£
7£¬´´½¨Ë÷ÒýµÄ³¡¾°
¡¡¡¡a£©ºÎʱÐèÒª´´½¨Ë÷Òý
- Ö÷¼ü×Ô¶¯½¨Á¢Î¨Ò»Ë÷Òý
- Ƶ·±×÷Ϊ²éѯµÄÌõ¼þµÄ×Ö¶ÎÓ¦¸Ã´´½¨Ë÷Òý
- ²éѯÖÐÓëÆäËû±í¹ØÁªµÄ×ֶΣ¬Íâ¼ü¹ØÏµ½¨Á¢Ë÷Òý
- Ƶ·±¸üеÄ×ֶβ»Êʺϴ´½¨Ë÷Òý
- Where Ìõ¼þÀïÓò»µ½µÄ×ֶβ»´´½¨Ë÷Òý
- µ¥¼ä/×éºÏË÷ÒýµÄÑ¡ÔñÎÊÌ⣨Ôڸ߲¢·¢ÏÂÇãÏò´´½¨×éºÏË÷Òý£©
- ²éѯÖÐÅÅÐòµÄ×ֶΣ¬ÅÅÐò×Ö¶ÎÈôͨ¹ýË÷ÒýÈ¥·ÃÎʽ«´ó´óÌá¸ßÅÅÐòµÄËÙ¶È
- ²éѯÖÐͳ¼Æ»òÕß·Ö×é×Ö¶Î
¡¡¡¡b£©ºÎʱ²»´´½¨Ë÷Òý
- ±í¼Ç¼̫ÉÙ
- ¾³£Ôöɾ¸ÄµÄ±í
- Êý¾ÝÖØ¸´ÇÒ·Ö²¼Æ½¾ùµÄ±í×ֶΡ£Èç¹ûij¸öÊý¾ÝÁаüº¬Ðí¶àÖØ¸´µÄÄÚÈÝ£¬ÎªËü½¨Á¢Ë÷Òý¾ÍûÓÐÌ«´óµÄʵ¼ÊЧ¹û¡£
ËÄ¡¢Explain
1£¬×÷ÓÃ
- ±íµÄ¶Áȡ˳Ðò£¨id ×ֶΣ¬Ô½´óÓÅÏȼ¶Ô½¸ß£©
- Êý¾Ý¶ÁÈ¡²Ù×÷µÄ²Ù×÷ÀàÐÍ£¨select_type ×ֶΣ©
- ÄÄЩË÷Òý¿ÉÒÔʹÓã¨possible_keys ×ֶΣ©
- ÄÄЩË÷Òý±»Êµ¼ÊʹÓã¨keys ×ֶΣ©
- ±íÖ®¼äµÄÒýÓã¨ref ×ֶΣ©
- ÿÕűíÓжàÉÙÐб»ÓÅ»¯Æ÷²éѯ£¨rows ×ֶΣ©
2£¬id
- idÏàͬ£¬Ö´ÐÐ˳ÐòÓÉÉÏÖÁÏÂ
- id²»Í¬£¬Èç¹ûÊÇ×Ó²éѯ£¬idµÄÐòºÅ»áµÝÔö£¬idÖµÔ½´óÓÅÏȼ¶Ô½¸ß£¬Ô½Ïȱ»Ö´ÐÐ
- idÏàͬ²»Í¬£¬Í¬Ê±´æÔÚ£ºidÈç¹ûÏàͬ£¬¿ÉÒÔÈÏΪÊÇÒ»×飬´ÓÉÏÍùÏÂ˳ÐòÖ´ÐУ»ÔÚËùÓÐ×éÖУ¬idÖµÔ½´ó£¬ÓÅÏȼ¶Ô½¸ß£¬Ô½ÏÈÖ´ÐУ»ÑÜÉú=DERIVED
2£¬select_type
¡¡¡¡select_type£º²éѯµÄÀàÐÍ£¬Ö÷ÒªÓÃÓÚÇø±ðÆÕͨ²éѯ¡¢ÁªºÏ²éѯ¡¢×Ó²éѯµÈ¸´ÔÓ²éѯ
- SIMPLE£º¼òµ¥µÄselect²éѯ£¬²éѯÖв»°üº¬×Ó²éѯ»òÕßUNION
- PRIMARY£º²éѯÖÐÈô°üº¬Èκθ´ÔÓµÄ×Ó²¿·Ö£¬×îÍâ²ã²éѯÔò±»±ê¼ÇΪPRIMARY
- SUBQUERY£ºÔÚSELECT»òÕßWHEREÁбíÖаüº¬ÁË×Ó²éѯ
- DERIVED£ºÔÚFROMÁбíÖаüº¬µÄ×Ó²éѯ±»±ê¼ÇΪDERIVED£¨ÑÜÉú£©MySQL»áµÝ¹éÖ´ÐÐÕâЩ×Ó²éѯ£¬°Ñ½á¹û·ÅÔÚÁÙʱ±íÀï
- UNION£ºÈôµÚ¶þ¸öSELECT³öÏÖÔÚUNIONÖ®ºó£¬Ôò±»±ê¼ÇΪUNION£»ÈôUNION°üº¬ÔÚFROM×Ó¾äµÄ×Ó²éѯÖУ¬Íâ²ãSELECT½«±»±ê¼ÇΪ£ºDERIVED
- UNION RESULT£º´ÓUNION±í»ñÈ¡½á¹ûµÄSELECT
3£¬table
¡¡¡¡table£ºÏÔʾÕâÒ»ÐеÄÊý¾ÝÊǹØÓÚÄÄÕűíµÄ
4£¬type
¡¡¡¡type£º·ÃÎÊÀàÐÍÅÅÁУ¬ÏÔʾ²éѯʹÓÃÁ˺ÎÖÖÀàÐÍ£¬ÆäÖдӺõ½»µÒÀ´ÎÊÇ£ºsystem>const>eq_ref>ref>fultext>ref_or_null>index_merge>unique_subquery>index_subquery>range>index>ALL¡£ÆäÖУ¬Ïà±È±È½ÏÖØÒªµÄÖ¸±êΪ£ºsystem > const > eq_ref > ref > range > index > ALL
- system£º±íÖ»ÓÐÒ»ÐмǼ£¨µÈÓÚϵͳ±í£©£¬ÕâÊÇconstÀàÐ͵ÄÌØÀý£¬Æ½Ê±²»»á³öÏÖ£¬Õâ¸öÒ²¿ÉÒÔºöÂÔ²»¼Æ
- const£º365ÌåÓýͶעͨ¹ýË÷ÒýÒ»´Î¾ÍÄÜÕÒµ½ÁË£¬constÓÃÓڱȽÏprimary key»òÕßuniqueË÷Òý¡£ÒòΪֻƥÅäÒ»ÐÐÊý¾Ý£¬365betÌåÓýÔÚÏߺܿ졣È罫Ö÷¼üÖÃÓÚwhereÁбíÖУ¬MySQL¾ÍÄܽ«¸Ã²éѯת»»ÎªÒ»¸ö³£Á¿¡¡¡¡
¡¡¡¡
- eq_ref£ºÎ¨Ò»ÐÔË÷Òý£¬¶ÔÓÚ365ÌåÓýͶעË÷Òý½¨£¬±íÖÐÖ»ÓÐÒ»Ìõ¼Ç¼Óë֮ƥÅ䣬³£¼ûÓÚÖ÷¼ü»òΨһË÷ÒýɨÃè
¡¡¡¡
- ref£º·ÇΨһË÷ÒýɨÃ裬·µ»ØÆ¥Åäij¸öµ¥¶ÀÖµµÄËùÓÐÐС£±¾ÖÊÉÏÒ²ÊÇ365ÌåÓýͶעË÷Òý·ÃÎÊ£¬Ëü·µ»ØËùÓÐÆ¥Åäij¸öµ¥¶ÀÖµµÄÐС£²»¹ý£¬Ëü¿ÉÄÜÕÒµ½¶à¸ö·ûºÏÌõ¼þµÄÐУ¬365betÌåÓýÔÚÏßËüÓ¦¸ÃÊôÓÚ²éÕÒºÍɨÃèµÄ»ìºÏÌå
¡¡¡¡
- range£ºÖ»¼ìË÷¸ø¶¨·¶Î§µÄÐУ¬Ê¹ÓÃÒ»¸öË÷ÒýÀ´Ñ¡ÔñÐС£keyÁÐÏÔʾʹÓÃÁËÄĸöË÷Òý£¬Ò»°ã¾ÍÊÇÄãµÄwhereÓï¾äÖгöÏÖÁËbetween¡¢<¡¢>¡¢inµÈµÄ²éѯ£¬ÕâÖÖ·¶Î§É¨ÃèË÷Òý±ÈÈ«±íɨÃèÒªºÃ£¬ÒòΪËûÖ»ÐèÒª¿ªÊ¼Ë÷ÒýµÄijһ¸öµã£¬¶ø½áÊøÓÚÁíÒ»µã£¬²»ÓÃɨÃèÈ«²¿Ë÷Òý
¡¡¡¡
- index£ºFull Index Scan£¬indexÓëALLÇø±ðΪindexÀàÐÍÖ»±éÀúË÷ÒýÊ÷¡£Õâͨ³£±ÈALL¿ì£¬ÒòΪË÷ÒýÎļþͨ³£±ÈÊý¾ÝÎļþС¡£(Ò²¾ÍÊÇ˵ËäÈ»allºÍindex¶¼ÊǶÁÈ«±í£¬µ«indexÊÇ´ÓË÷ÒýÖжÁÈ¡µÄ£¬¶øallÊÇ´ÓÓ²ÅÌÊý¾Ý¿âÎļþÖжÁµÄ)
¡¡¡¡
- ALL£ºFull Table Scan£¬½«±éÀúÈ«±íÒÔÕÒµ½Æ¥ÅäµÄÐÐ(È«±íɨÃè)
¡¡¡¡
5£¬possible_keys
- ÏÔʾ¿ÉÄÜÓ¦ÓÃÔÚÕâÕűíÉϵÄË÷Òý£¬Ò»¸ö»ò¶à¸ö
- Èô²éÑ¯Éæ¼°µÄ×Ö¶ÎÉÏ´æÔÚË÷Òý£¬Ôò¸ÃË÷Òý½«±»Áгö£¬µ«²»Ò»¶¨±»²éѯʵ¼ÊʹÓÃ
6£¬key
- ʵ¼ÊʹÓõÄË÷Òý£¬Èç¹ûΪnull£¬ÔòûÓÐʹÓÃË÷Òý
- Èô²éѯÖÐʹÓÃÁ˸²¸ÇË÷Òý£¬Ôò¸ÃË÷Òý½ö³öÏÖÔÚkeyÁбíÖÐ
¡¡¡¡
7£¬key_len
- 365ÌåÓýͶעË÷ÒýÖÐʹÓõÄ×Ö½ÚÊý£¬¿Éͨ¹ý¸ÃÁмÆËã²éѯÖÐʹÓõÄË÷ÒýµÄ³¤¶È¡£ÔÚ²»Ëðʧ¾«È·ÐÔµÄÇé¿öÏ£¬³¤¶ÈÔ½¶ÌÔ½ºÃ
- key_lenÏÔʾµÄֵΪË÷Òý×î´ó¿ÉÄܳ¤¶È£¬²¢·Çʵ¼ÊʹÓó¤¶È£¬¼´key_lenÊǸù¾Ý±í¶¨Ò弯Ëã¶øµÃ£¬²»ÊÇͨ¹ý±íÄÚ¼ìË÷³öµÄ
¡¡¡¡
8£¬ref
- ÏÔʾË÷ÒýÄÄÒ»Áб»Ê¹ÓÃÁË£¬Èç¹û¿ÉÄܵϰ£¬×îºÃÊÇÒ»¸ö³£Êý¡£ÄÄЩÁлò³£Á¿±»ÓÃÓÚ²éÕÒË÷ÒýÁÐÉϵÄÖµ
- ÓÉkey_len¿ÉÖªt1±íµÄµÄË÷Òýidx_col1_col2±»³ä·ÖʹÓã¬t1±íµÄcol1Æ¥Åät2±íµÄcol1£¬t1±íµÄcol2Æ¥ÅäÒ»¸ö³£Á¿('ac')
¡¡¡¡
9£¬rows
¡¡¡¡¸ù¾Ý±íͳ¼ÆÐÅÏ¢¼°Ë÷ÒýÑ¡ÓÃÇé¿ö£¬´óÖ¹ÀËã³öÕÒµ½ËùÐèµÄ¼Ç¼ËùÐèÒª¶ÁÈ¡µÄÐÐÊý
¡¡¡¡
10£¬Extra
a£©Using filesort(ÎļþÅÅÐò)
- ÔÚʹÓÃorder by¹Ø¼ü×ÖµÄʱºò£¬Èç¹û´ýÅÅÐòµÄÄÚÈݲ»ÄÜÓÉËùʹÓõÄË÷ÒýÖ±½ÓÍê³ÉÅÅÐòµÄ»°£¬ÄÇômysqlÓпÉÄܾÍÒª½øÐÐÎļþÅÅÐò
- filesortÊÇͨ¹ýÏàÓ¦µÄÅÅÐòËã·¨,½«È¡µÃµÄÊý¾ÝÔÚÄÚ´æÖнøÐÐÅÅÐò
- MySQLÐèÒª½«Êý¾ÝÔÚÄÚ´æÖнøÐÐÅÅÐò£¬ËùʹÓõÄÄÚ´æÇøÓòÒ²¾ÍÊÇ365betÌåÓýÔÚÏßÃÇͨ¹ýsort_buffer_size ϵͳ±äÁ¿ËùÉèÖõÄÅÅÐòÇø
¡¡¡¡
b£©Using temporary(´´½¨ÁÙʱ±í)
- using temporaryÒ»°ã³öÏÖÔÚ¶àÕűíµÄÊý¾ÝÐèÒªÅÅÐòµÄÇé¿öÏÂ. MySQl»áÏÈʹÓÃusing temporary±£´æÁÙʱÊý¾Ý, È»ºóÔÙÔÚÁÙʱ±íÉÏʹÓÃfilesort½øÐÐÅÅÐò
- Èç¹ûÓÐORDER BY×Ó¾äºÍÒ»¸ö²»Í¬µÄGROUP BY×Ó¾ä, »òÕßÈç¹ûORDER BY»òGROUP BYÖеÄ×ֶζ¼À´×ÔÆäËûµÄ±í¶ø·ÇÁ¬½Ó˳ÐòÖеĵÚÒ»¸ö±íµÄ»°, ¾Í»á´´½¨Ò»¸öÁÙʱ±íÁË¡£
- MySQLÊ×ÏÈ´´½¨heapÒýÇæµÄÁÙʱ±í, Èç¹ûÁÙʱµÄÊý¾Ý¹ý¶à, ³¬¹ýmax_heap_table_sizeÅäÖõĴóС, »á×Ô¶¯°ÑÁÙʱ±íת»»³ÉMyISAMÒýÇæµÄ±íÀ´Ê¹ÓÃ
¡¡¡¡
c£©Using indexing(¸²¸ÇË÷Òý)
-
365ÌåÓýͶעÏàÓ¦µÄselect²Ù×÷ÖÐʹÓÃÁ˸²¸ÇË÷Òý£¨Coveing Index£©£¬±ÜÃâ·ÃÎÊÁ˱íµÄÊý¾ÝÐС£
-
Èç¹ûͬʱ³öÏÖusing where£¬±íÃ÷Ë÷Òý±»ÓÃÀ´Ö´ÐÐË÷Òý¼üÖµµÄ²éÕÒ
-
Èç¹ûûÓÐͬʱ³öÏÖusing where£¬±íÃ÷Ë÷ÒýÓÃÀ´¶ÁÈ¡Êý¾Ý¶ø·ÇÖ´ÐвéÕÒ¶¯×÷¡¡¡¡
¡¡¡¡
¸²¸ÇË÷Òý:
¡¡¡¡Àí½â·½Ê½Ò»£º¾ÍÊÇselectµÄÊý¾ÝÁÐÖ»ÓôÓË÷ÒýÖоÍÄܹ»È¡µÃ£¬²»±Ø¶ÁÈ¡Êý¾ÝÐУ¬MySQL¿ÉÒÔÀûÓÃË÷Òý·µ»ØselectÁбíÖеÄ×ֶΣ¬¶ø²»±Ø¸ù¾ÝË÷ÒýÔٴζÁÈ¡Êý¾ÝÎļþ£¬»»¾ä»°Ëµ²éѯÁÐÒª±»Ëù½¨µÄË÷Òý¸²¸Ç¡£
¡¡¡¡Àí½â·½Ê½¶þ£ºË÷ÒýÊǸßЧÕÒµ½ÐеÄÒ»¸ö·½·¨£¬µ«ÊÇÒ»°ãÊý¾Ý¿âÒ²ÄÜʹÓÃË÷ÒýÕÒµ½Ò»¸öÁеÄÊý¾Ý£¬Òò´ËËü²»±Ø¶ÁÈ¡Õû¸öÐС£±Ï¾¹Ë÷ÒýÒ¶×Ó½Úµã´æ´¢ÁËËüÃÇË÷ÒýµÄÊý¾Ý£»µ±ÄÜͨ¹ý¶ÁÈ¡Ë÷Òý¾Í¿ÉÒԵõ½ÏëÒªµÄÊý¾Ý£¬ÄǾͲ»ÐèÒª¶ÁÈ¡ÐÐÁË¡£Ò»¸öË÷Òý°üº¬ÁË£¨»ò¸²¸ÇÁË£©Âú×ã²éѯ½á¹ûµÄÊý¾Ý¾Í½Ð×ö¸²¸ÇË÷Òý¡£
¡¡¡¡×¢Ò⣺Èç¹ûҪʹÓø²¸ÇË÷Òý£¬Ò»¶¨Òª×¢ÒâselectÁбíÖÐֻȡ³öÐèÒªµÄÁУ¬²»¿Éselect * £¬ÒòΪÈç¹û½«ËùÓÐ×Ö¶365betÌåÓýÔÚÏß»Æð×öË÷Òý»áµ¼ÖÂË÷ÒýÎļþ¹ý´ó£¬²éѯÐÔÄÜϽµ¡£
d£©Using where
¡¡¡¡365ÌåÓýͶעʹÓÃÁËwhere¹ýÂË
e£©Using join buffer
¡¡¡¡365ÌåÓýͶעʹÓÃÁËÁ¬½Ó»º´æ
f£©impossible where
¡¡¡¡where×Ó¾äµÄÖµ×ÜÊÇfalse£¬²»ÄÜÓÃÀ´»ñÈ¡ÈκÎÔª×é
¡¡¡¡
g£©select tables optimized away
¡¡¡¡ÔÚûÓÐGROUP BY×Ó¾äµÄÇé¿öÏ£¬»ùÓÚË÷ÒýÓÅ»¯MIN/MAX²Ù×÷»òÕß¶ÔÓÚMyISAM´æ´¢ÒýÇæÓÅ»¯COUNT(*)
²Ù×÷£¬²»±ØµÈµ½Ö´Ðн׶ÎÔÙ½øÐмÆË㣬²éѯִÐмƻ®Éú³ÉµÄ½×¶Î¼´Íê³ÉÓÅ»¯¡£
¡¡¡¡
h£©distinct
¡¡¡¡ÓÅ»¯distinct£¬ÔÚÕÒµ½µÚһƥÅäµÄÔª×éºó¼´Í£Ö¹ÕÒͬÑùÖµµÄ¹¤×÷