±à¼ÍƼö: |
±¾ÎÄÀ´×ÔÓÚcsdn,Ö÷Òª½²½âMySQLÂß¼¼Ü¹¹ºÍMySQL²éѯ¹ý³Ì
ϵͳÅäÖÃÓëά»¤ÓÅ»¯£¬Ï£Íû¶ÔÄúµÄѧϰÓÐËù°ïÖú¡£ |
|
MySQLÂß¼¼Ü¹¹

MySQLÂß¼¼Ü¹¹ÕûÌå·ÖΪÈý²ã :
1>¿Í»§¶Ë : ²¢·ÇMySQLËù¶ÀÓУ¬ÖîÈç : Á¬½Ó´¦Àí¡¢ÊÚȨÈÏÖ¤¡¢°²È«µÈ¹¦ÄܾùÔÚÕâÒ»²ã´¦Àí
2>ºËÐÄ·þÎñ :°üÀ¨²éѯ½âÎö¡¢·ÖÎö¡¢ÓÅ»¯¡¢»º´æ¡¢ÄÚÖú¯Êý(±ÈÈç : ʱ¼ä¡¢Êýѧ¡¢¼ÓÃܵȺ¯Êý)£¬ËùÓÐµÄ¿ç´æ´¢ÒýÇæµÄ¹¦ÄÜÒ²ÔÚÕâÒ»²ãʵÏÖ
: ´æ´¢¹ý³Ì¡¢´¥·¢Æ÷¡¢ÊÓͼµÈ
3>´æ´¢ÒýÇæ :¸ºÔð MySQL ÖеÄÊý¾Ý´æ´¢ºÍÌáÈ¡£¬ºÍ Linux ϵÄÎļþϵͳÀàËÆ£¬Ã¿ÖÖ´æ´¢ÒýÇæ¶¼ÓÐÆäÓÅÊÆºÍÁÓÊÆ£¬ÖмäµÄ·þÎñ²ãͨ¹ý
API Óë´æ´¢ÒýÇæÍ¨ÐÅ£¬ÕâЩ API½Ó¿Ú ÆÁ±Î²»Í¬´æ´¢ÒýÇæ¼äµÄ²îÒì
MySQL²éѯ¹ý³Ì

MySQL Õû¸ö²éѯִÐйý³Ì£¬×ܵÄÀ´Ëµ·ÖΪ 5 ¸ö²½Öè :
1> ¿Í»§¶ËÏò MySQL ·þÎñÆ÷·¢ËÍÒ»Ìõ²éѯÇëÇó
2> ·þÎñÆ÷Ê×Ïȼì²é²éѯ»º´æ£¬Èç¹ûÃüÖлº´æ£¬ÔòÁ¢¿Ì·µ»Ø´æ´¢ÔÚ»º´æÖеĽá¹û£¬·ñÔò½øÈëÏÂÒ»½×¶Î
3> ·þÎñÆ÷½øÐÐ SQL½âÎö¡¢Ô¤´¦Àí¡¢ÔÙÓÉÓÅ»¯Æ÷Éú³É¶ÔÓ¦µÄÖ´Ðмƻ®
4> MySQL ¸ù¾ÝÖ´Ðмƻ®£¬µ÷Óô洢ÒýÇæµÄ APIÀ´Ö´Ðвéѯ
5> ½«½á¹û·µ»Ø¸ø¿Í»§¶Ë£¬Í¬Ê±»º´æ²éѯ½á¹û
¿Í»§¶Ë/·þÎñ¶ËͨÐÅÐÒé
MySQL¿Í»§¶Ë/·þÎñ¶ËͨÐÅÐÒé ÊÇ ¡°°ëË«¹¤¡± µÄ£¬ÔÚÈÎһʱ¿Ì£¬ÒªÃ´ÊÇ·þÎñÆ÷Ïò¿Í»§¶Ë·¢ËÍÊý¾Ý£¬ÒªÃ´Êǿͻ§¶ËÏò·þÎñÆ÷·¢ËÍÊý¾Ý£¬ÕâÁ½¸ö¶¯×÷²»ÄÜͬʱ·¢Éú¡£Ò»µ©Ò»¶Ë¿ªÊ¼·¢ËÍÏûÏ¢£¬ÁíÒ»¶ËÒª½ÓÊÕÍêÕû¸öÏûÏ¢²ÅÄÜÏìÓ¦Ëü£¬ËùÒÔÎÞ·¨Ò²ÎÞÐ뽫һ¸öÏûÏ¢ÇгÉС¿é¶ÀÁ¢·¢ËÍ£¬Ò²Ã»Óа취½øÐÐÁ÷Á¿¿ØÖÆ¡£¿Í»§¶ËÓÃÒ»¸öµ¥¶ÀµÄÊý¾Ý°ü½«²éѯÇëÇó·¢Ë͸ø·þÎñÆ÷£¬ËùÒÔµ±²éѯÓï¾äºÜ³¤µÄʱºò£¬ÐèÒªÉèÖÃ
max_allowed_packet²ÎÊý£¬Èç¹û²éѯʵÔÚÊÇÌ«´ó£¬·þÎñ¶Ë»á¾Ü¾ø½ÓÊÕ¸ü¶àÊý¾Ý²¢Å׳öÒì³£¡£ÓëÖ®Ïà·´µÄÊÇ£¬·þÎñÆ÷ÏìÓ¦¸øÓû§µÄÊý¾Ýͨ³£»áºÜ¶à£¬Óɶà¸öÊý¾Ý°ü×é³É¡£µ«Êǵ±·þÎñÆ÷ÏìÓ¦¿Í»§¶ËÇëÇóʱ£¬¿Í»§¶Ë±ØÐëÍêÕûµÄ½ÓÊÕÕû¸ö·µ»Ø½á¹û£¬¶ø²»Äܼòµ¥µÄÖ»È¡Ç°Ãæ¼¸Ìõ½á¹û£¬È»ºóÈ÷þÎñÆ÷Í£Ö¹·¢ËÍ¡£Òò¶øÔÚʵ¼Ê¿ª·¢ÖУ¬¾¡Á¿±£³Ö²éѯ¼òµ¥ÇÒÖ»·µ»Ø±ØÐèµÄÊý¾Ý£¬¼õСͨÐżäÊý¾Ý°üµÄ´óСºÍÊýÁ¿ÊÇÒ»¸ö·Ç³£ºÃµÄϰ¹ß£¬ÕâÒ²ÊDzéѯÖо¡Á¿±ÜÃâʹÓÃ
SELECT * ÒÔ¼°¼ÓÉÏ LIMIT ÏÞÖÆµÄÔÒòÖ®Ò»
²éѯ»º´æ
ÔÚ½âÎöÒ»¸ö²éѯÓï¾äǰ£¬Èç¹û²éѯ»º´æÊÇ´ò¿ªµÄ£¬ÄÇô MySQL »á¼ì²éÕâ¸ö²éѯÓï¾äÊÇ·ñÃüÖвéѯ»º´æÖеÄÊý¾Ý¡£Èç¹ûµ±Ç°²éѯǡºÃÃüÖвéѯ»º´æ£¬ÔÚ¼ì²éÒ»´ÎÓû§È¨ÏÞºóÖ±½Ó·µ»Ø»º´æÖеĽá¹û¡£ÕâÖÖÇé¿öÏ£¬²éѯ²»»á±»½âÎö£¬Ò²²»»áÉú³ÉÖ´Ðмƻ®£¬¸ü²»»áÖ´ÐС£MySQL½«»º´æ´æ·ÅÔÚÒ»¸öÒýÓñí
(²»ÒªÀí½â³Étable£¬¿ÉÒÔÈÏΪÊÇÀàËÆÓÚ HashMap µÄÊý¾Ý½á¹¹)£¬Í¨¹ýÒ»¸ö¹þÏ£ÖµË÷Òý£¬Õâ¸ö¹þϣֵͨ¹ý²éѯ±¾Éí¡¢µ±Ç°Òª²éѯµÄÊý¾Ý¿â¡¢¿Í»§¶ËÐÒé°æ±¾ºÅµÈһЩ¿ÉÄÜÓ°Ïì½á¹ûµÄÐÅÏ¢¼ÆËãµÃÀ´¡£ËùÒÔÁ½¸ö²éѯÔÚÈκÎ×Ö·ûÉϵIJ»Í¬
(ÀýÈç : ¿Õ¸ñ¡¢×¢ÊÍ)£¬¶¼»áµ¼Ö»º´æ²»»áÃüÖÐ
Èç¹û²éѯÖаüº¬ÈκÎÓû§×Ô¶¨Ò庯Êý¡¢´æ´¢º¯Êý¡¢Óû§±äÁ¿¡¢ÁÙʱ±í¡¢MySQL¿âÖеÄϵͳ±í£¬Æä²éѯ½á¹û¶¼²»»á±»»º´æ¡£±ÈÈ纯Êý
NOW() »òÕß CURRENT_DATE() »áÒòΪ²»Í¬µÄ²éѯʱ¼ä£¬·µ»Ø²»Í¬µÄ²éѯ½á¹û£¬ÔÙ±ÈÈç°üº¬
CURRENT_USER »òÕß CONNECION_ID() µÄ²éѯÓï¾ä»áÒòΪ²»Í¬µÄÓû§¶ø·µ»Ø²»Í¬µÄ½á¹û£¬½«ÕâÑùµÄ²éѯ½á¹û»º´æÆðÀ´Ã»ÓÐÈκεÄÒâÒå
MySQL ²éѯ»º´æÏµÍ³»á¸ú×Ù²éѯÖÐÉæ¼°µÄÿ¸ö±í£¬Èç¹ûÕâЩ±í (Êý¾Ý»ò½á¹¹) ·¢Éú±ä»¯£¬ÄÇôºÍÕâÕűíÏà¹ØµÄËùÓлº´æÊý¾Ý¶¼½«Ê§Ð§¡£ÕýÒòΪÈç´Ë£¬ÔÚÈκεÄд²Ù×÷ʱ£¬MySQL±ØÐ뽫¶ÔÓ¦±íµÄËùÓлº´æ¶¼ÉèÖÃΪʧЧ¡£Èç¹û²éѯ»º´æ·Ç³£´ó»òÕßË鯬ºÜ¶à£¬Õâ¸ö²Ù×÷¾Í¿ÉÄÜ´øÀ´ºÜ´óµÄϵͳÏûºÄ£¬ÉõÖÁµ¼ÖÂϵͳ½©ËÀÒ»»á¶ù£¬¶øÇÒ²éѯ»º´æ¶ÔϵͳµÄ¶îÍâÏûºÄÒ²²»½ö½öÔÚд²Ù×÷£¬¶Á²Ù×÷Ò²²»ÀýÍâ
:
1>ÈκεIJéѯÓï¾äÔÚ¿ªÊ¼Ö®Ç°¶¼±ØÐë¾¹ý¼ì²é£¬¼´Ê¹ÕâÌõ SQLÓï¾ä ÓÀÔ¶²»»áÃüÖлº´æ
2>Èç¹û²éѯ½á¹û¿ÉÒÔ±»»º´æ£¬ÄÇôִÐÐÍê³Éºó£¬»á½«½á¹û´æÈ뻺´æ£¬Ò²»á´øÀ´¶îÍâµÄϵͳÏûºÄ
»ùÓÚ´Ë£¬²¢²»ÊÇʲôÇé¿öϲéѯ»º´æ¶¼»áÌá¸ßϵͳÐÔÄÜ£¬»º´æºÍʧЧ¶¼»á´øÀ´¶îÍâÏûºÄ£¬ÌرðÊÇдÃܼ¯ÐÍÓ¦Óã¬Ö»Óе±»º´æ´øÀ´µÄ×ÊÔ´½ÚÔ¼´óÓÚÆä±¾ÉíÏûºÄµÄ×ÊԴʱ£¬²Å»á¸øÏµÍ³´øÀ´ÐÔÄÜÌáÉý¡£¿ÉÒÔ³¢ÊÔ´ò¿ª²éѯ»º´æ£¬²¢ÔÚÊý¾Ý¿âÉè¼ÆÉÏ×öһЩÓÅ»¯
:
1> Óöà¸öС±í´úÌæÒ»¸ö´ó±í£¬×¢Òâ²»Òª¹ý¶ÈÉè¼Æ
2> ÅúÁ¿²åÈë´úÌæÑ»·µ¥Ìõ²åÈë
3> ºÏÀí¿ØÖÆ»º´æ¿Õ¼ä´óС£¬Ò»°ãÀ´ËµÆä´óСÉèÖÃΪ¼¸Ê®ÕױȽϺÏÊÊ
4> ¿ÉÒÔͨ¹ý SQL_CACHE ºÍ SQL_NO_CACHE À´¿ØÖÆÄ³¸ö²éѯÓï¾äÊÇ·ñÐèÒª½øÐлº´æ
×¢ :SQL_NO_CACHE ÊǽûÖ¹»º´æ²éѯ½á¹û£¬µ«²¢²»Òâζ×Å cache ²»×÷Ϊ½á¹û·µ»Ø¸ø query£¬Ö®Ç°µÄ»º´æ½á¹ûÖ®ºóÒ²¿ÉÒÔ²éѯµ½
mysql> SELECT
SQL_CACHE COUNT(*) FROM a;
+----------+
| COUNT(*) |
+----------+
|98304 |
+----------+
1 row in set, 1 warning (0.01 sec)
mysql> SELECT SQL_NO_CACHE COUNT(*) FROMa;
+----------+
| COUNT(*) |
+----------+
|98304 |
+----------+
1 row in set, 1 warning (0.02 sec)
|
¿ÉÒÔÔÚ SELECT Óï¾äÖÐÖ¸¶¨²éѯ»º´æµÄÑ¡Ï¶ÔÓÚÄÇЩ¿Ï¶¨ÒªÊµÊ±µÄ´Ó±íÖлñÈ¡Êý¾ÝµÄ²éѯ£¬»òÕß¶ÔÓÚÄÇЩһÌìÖ»Ö´ÐÐÒ»´ÎµÄ²éѯ£¬¶¼¿ÉÒÔÖ¸¶¨²»½øÐвéѯ»º´æ£¬Ê¹ÓÃ
SQL_NO_CACHE Ñ¡Ïî¡£¶ÔÓÚÄÇЩ±ä»¯²»Æµ·±µÄ±í£¬²éѯ²Ù×÷ºÜ¹Ì¶¨£¬¿ÉÒÔ½«¸Ã²éѯ²Ù×÷»º´æÆðÀ´£¬ÕâÑùÿ´ÎÖ´ÐеÄʱºò²»Êµ¼Ê·ÃÎʱíºÍÖ´Ðвéѯ£¬Ö»ÊÇ´Ó»º´æ»ñµÃ½á¹û£¬¿ÉÒÔÓÐЧµØ¸ÄÉÆ²éѯµÄÐÔÄÜ£¬Ê¹ÓÃ
SQL_CACHE Ñ¡Ïî
²é¿´¿ªÆô»º´æµÄÇé¿ö
mysql> SHOW
VARIABLES LIKE '%query_cache%';
+------------------------------+---------+
| Variable_name| Value|
+------------------------------+---------+
| have_query_cache| YES|
| query_cache_limit| 1048576 |
| query_cache_min_res_unit| 4096|
| query_cache_size| 1048576 | #¸ø»º´æ·ÖÅäµÄ×î´óÄÚ´æ¿Õ¼ä
| query_cache_type| OFF| #ÊÇ·ñ¿ªÆô²éѯ»º´æ£¬0
±íʾ²»¿ªÆô²éѯ»º´æ£¬1 ±íʾʼÖÕ¿ªÆô²éѯ»º´æ (²»Òª»º´æÊ¹Óà sql_no_cache)£¬
2 ±íʾ°´Ð迪Æô²éѯ»º´æ (ÐèÒª»º´æÊ¹Óà sql_cache)
| query_cache_wlock_invalidate | OFF|
+------------------------------+---------+
6 rows in set (0.00 sec)
|
¶ÔÓÚ²éѯ»º´æµÄһЩ²Ù×÷
FLUSH QUERY CACHE : ÇåÀí²éѯ»º´æÄÚ´æË鯬
RESET QUERY CACHE : ´Ó²éѯ»º´æÖÐÒÆ³öËùÓвéѯ
FLUSH TABLES : ¹Ø±ÕËùÓдò¿ªµÄ±í£¬Í¬Ê±¸Ã²Ù×÷½«»áÇå¿Õ²éѯ»º´æÖеÄÄÚÈݲéѯÓÅ»¯
¾¹ýÇ°ÃæµÄ²½ÖèÉú³ÉµÄÓï·¨Ê÷±»ÈÏΪÊǺϷ¨µÄÁË£¬²¢ÇÒÓÉÓÅ»¯Æ÷½«Æäת»¯³É²éѯ¼Æ»®¡£¶àÊýÇé¿öÏ£¬Ò»Ìõ²éѯ¿ÉÒÔÓкܶàÖÖÖ´Ðз½Ê½£¬×îºó¶¼·µ»ØÏàÓ¦µÄ½á¹û¡£ÓÅ»¯Æ÷µÄ×÷ÓþÍÊÇÕÒµ½ÕâÆäÖÐ×îºÃµÄÖ´Ðмƻ®¡£MySQLʹÓûùÓڳɱ¾µÄÓÅ»¯Æ÷£¬Ëü³¢ÊÔÔ¤²âÒ»¸ö²éѯʹÓÃijÖÖÖ´Ðмƻ®Ê±µÄ³É±¾£¬²¢Ñ¡ÔñÆäÖгɱ¾×îСµÄÒ»¸ö¡£ÔÚ
MySQL ¿ÉÒÔͨ¹ý²éѯµ±Ç°»á»°µÄ last_query_cost µÄÖµÀ´µÃµ½Æä¼ÆË㵱ǰ²éѯµÄ³É±¾
mysql> SELECT
* FROM p_product_fee WHERE total_price BETWEEN
580000 AND 680000;
mysql>SHOW STATUS LIKE 'last_query_cost';
# ÏÔʾҪ×ö¶àÉÙÒ³µÄËæ»ú²éѯ²ÅÄܵõ½×îºóÒ»²éѯ½á¹û£¬Õâ¸ö½á¹ûÊǸù¾ÝһЩÁеÄͳ¼ÆÐÅÏ¢¼ÆËãµÃÀ´µÄ£¬ÕâЩͳ¼ÆÐÅÏ¢°üÀ¨
: ÿÕűí»òÕßË÷ÒýµÄÒ³Ãæ¸öÊý¡¢Ë÷ÒýµÄ»ùÊý¡¢Ë÷ÒýºÍÊý¾ÝÐеij¤¶È¡¢Ë÷ÒýµÄ·Ö²¼Çé¿öµÈµÈ
|
Óзdz£¶àµÄÔÒò»áµ¼Ö MySQL Ñ¡Ôñ´íÎóµÄÖ´Ðмƻ®£¬±ÈÈçͳ¼ÆÐÅÏ¢²»×¼È·¡¢²»»á¿¼ÂDz»ÊÜÆä¿ØÖÆµÄ²Ù×÷³É±¾(Óû§×Ô¶¨Ò庯Êý¡¢´æ´¢¹ý³Ì)¡¢MySQLÈÏΪµÄ×îÓŸúÎÒÃÇÏëµÄ²»Ò»Ñù
(ÎÒÃÇÏ£ÍûÖ´ÐÐʱ¼ä¾¡¿ÉẠ̈ܶ¬µ« MySQL ֵѡÔñËüÈÏΪ³É±¾Ð¡µÄ£¬µ«³É±¾Ð¡²¢²»Òâζ×ÅÖ´ÐÐʱ¼ä¶Ì) µÈµÈ
MySQLµÄ²éѯÓÅ»¯Æ÷ÊÇÒ»¸ö·Ç³£¸´ÔӵIJ¿¼þ£¬ËüʹÓÃÁ˷dz£¶àµÄÓÅ»¯²ßÂÔÀ´Éú³ÉÒ»¸ö×îÓŵÄÖ´Ðмƻ® :
1> ÖØÐ¶¨Òå±íµÄ¹ØÁªË³Ðò (¶àÕÅ±í¹ØÁª²éѯʱ£¬²¢²»Ò»¶¨°´ÕÕ SQL ÖÐÖ¸¶¨µÄ˳Ðò½øÐУ¬µ«ÓÐһЩ¼¼ÇÉ¿ÉÒÔÖ¸¶¨¹ØÁªË³Ðò)
2> ÓÅ»¯ MIN() ºÍ MAX()º¯Êý (ÕÒijÁеÄ×îСֵ£¬Èç¹û¸ÃÁÐÓÐË÷Òý£¬Ö»ÐèÒª²éÕÒ B+TreeË÷Òý
×î×ó¶Ë£¬·´Ö®Ôò¿ÉÒÔÕÒµ½×î´óÖµ)
3> ÌáǰÖÕÖ¹²éѯ (±ÈÈç : ʹÓà Limit ʱ£¬²éÕÒµ½Âú×ãÊýÁ¿µÄ½á¹û¼¯ºó»áÁ¢¼´ÖÕÖ¹²éѯ)
4> ÓÅ»¯ÅÅÐò (ÔÚÀϰ汾 MySQL »áʹÓÃÁ½´Î´«ÊäÅÅÐò£¬¼´ÏȶÁÈ¡ÐÐÖ¸ÕëºÍÐèÒªÅÅÐòµÄ×Ö¶ÎÔÚÄÚ´æÖÐ¶ÔÆäÅÅÐò£¬È»ºóÔÙ¸ù¾ÝÅÅÐò½á¹ûÈ¥¶ÁÈ¡Êý¾ÝÐУ¬¶øÐ°汾²ÉÓõÄÊǵ¥´Î´«ÊäÅÅÐò£¬Ò²¾ÍÊÇÒ»´Î¶ÁÈ¡ËùÓеÄÊý¾ÝÐУ¬È»ºó¸ù¾Ý¸ø¶¨µÄÁÐÅÅÐò¡£¶ÔÓÚI/OÃܼ¯ÐÍÓ¦Óã¬Ð§ÂÊ»á¸ßºÜ¶à)
²éѯִÐÐÒýÇæ
ÔÚÍê³É½âÎöºÍÓÅ»¯½×¶ÎÒÔºó£¬MySQL»áÉú³É¶ÔÓ¦µÄÖ´Ðмƻ®£¬²éѯִÐÐÒýÇæ¸ù¾ÝÖ´Ðмƻ®¸ø³öµÄÖ¸ÁîÖð²½Ö´Ðеóö½á¹û¡£Õû¸öÖ´Ðйý³ÌµÄ´ó²¿·Ö²Ù×÷¾ùÊÇͨ¹ýµ÷Óô洢ÒýÇæÊµÏֵĽӿÚÀ´Íê³É£¬ÕâЩ½Ó¿Ú±»³ÆÎª
handler API¡£²éѯ¹ý³ÌÖеÄÿһÕűíÓÉÒ»¸ö handler ʵÀý±íʾ¡£Êµ¼ÊÉÏ£¬MySQLÔÚ²éѯÓÅ»¯½×¶Î¾ÍΪÿһÕÅ±í´´½¨ÁËÒ»¸ö
handlerʵÀý£¬ÓÅ»¯Æ÷¿ÉÒÔ¸ù¾ÝÕâЩʵÀýµÄ½Ó¿ÚÀ´»ñÈ¡±íµÄÏà¹ØÐÅÏ¢£¬°üÀ¨±íµÄËùÓÐÁÐÃû¡¢Ë÷Òýͳ¼ÆÐÅÏ¢µÈ¡£´æ´¢ÒýÇæ½Ó¿ÚÌṩÁ˷dz£·á¸»µÄ¹¦ÄÜ£¬µ«Æäµ×²ã½öÓм¸Ê®¸ö½Ó¿Ú£¬ÕâЩ½Ó¿ÚÏñ´î»ýľһÑùÍê³ÉÁËÒ»´Î²éѯµÄ´ó²¿·Ö²Ù×÷
·µ»Ø½á¹û¸ø¿Í»§¶Ë
²éѯִÐеÄ×îºóÒ»¸ö½×¶Î¾ÍÊǽ«½á¹û·µ»Ø¸ø¿Í»§¶Ë¡£¼´Ê¹²éѯ²»µ½Êý¾Ý£¬MySQL ÈÔÈ»»á·µ»ØÕâ¸ö²éѯµÄÏà¹ØÐÅÏ¢£¬±ÈÈç¸Ã²éѯӰÏìµ½µÄÐÐÊýÒÔ¼°Ö´ÐÐʱ¼äµÈ¡£Èç¹û²éѯ»º´æ±»´ò¿ªÇÒÕâ¸ö²éѯ¿ÉÒÔ±»»º´æ£¬MySQLÒ²»á½«½á¹û´æ·Åµ½»º´æÖС£½á¹û¼¯·µ»Ø¿Í»§¶ËÊÇÒ»¸öÔöÁ¿ÇÒÖð²½·µ»ØµÄ¹ý³Ì¡£ÓпÉÄÜ
MySQL ÔÚÉú³ÉµÚÒ»Ìõ½á¹ûʱ£¬¾Í¿ªÊ¼Ïò¿Í»§¶ËÖð²½·µ»Ø½á¹û¼¯¡£ÕâÑù·þÎñ¶Ë¾ÍÎÞÐë´æ´¢Ì«¶à½á¹û¶øÏûºÄ¹ý¶àÄڴ棬Ҳ¿ÉÒÔÈÿͻ§¶ËµÚһʱ¼ä»ñµÃ·µ»Ø½á¹û¡£ÐèҪעÒâµÄÊÇ£¬½á¹û¼¯ÖеÄÿһÐж¼»áÒÔÒ»¸öÂú×ã¿Í»§¶Ë/·þÎñÆ÷ͨÐÅÐÒéµÄÊý¾Ý°ü·¢ËÍ£¬ÔÙͨ¹ý
TCPÐÒé ½øÐд«Ê䣬ÔÚ´«Êä¹ý³ÌÖУ¬¿ÉÄÜ¶Ô MySQL µÄÊý¾Ý°ü½øÐлº´æÈ»ºóÅúÁ¿·¢ËͲéѯϵͳÐÔÄÜ
SHOW STATUS LIKE 'value';
value²ÎÊýµÄ¼¸¸öͳ¼Æ²ÎÊýÈçÏ :
Connections : Á¬½Ó MySQL ·þÎñÆ÷µÄ´ÎÊý
Uptime : MySQL ·þÎñÆ÷µÄÉÏÏßʱ¼ä
Slow_queries : Âý²éѯ´ÎÊý
Com_Select : ²éѯ²Ù×÷µÄ´ÎÊý
Com_insert : ²åÈë²Ù×÷µÄ´ÎÊý
Com_update : ¸üвÙ×÷µÄ´ÎÊý
Com_delete : ɾ³ý²Ù×÷µÄ´ÎÊý
1> ·ÖÎö²éѯÓï¾ä
EXPLAIN£¬DESCRIBEÓÃÓÚ·ÖÎöSELECTÓï¾äµÄÖ´ÐÐÇé¿ö
EXPLAIN SELECT Óï¾ä;
DESCRIBE SELECT Óï¾ä;
·µ»ØµÄ²éѯ½á¹ûÐÅÏ¢ :
id : ±íʾ SELECT Óï¾äµÄ±àºÅ
select_type : ±íʾ SELECT Óï¾äÀàÐÍ¡£¸Ã²ÎÊýÓм¸¸ö³£ÓõÄȡֵ£¬¼´ SIMPLE
±í¼òµ¥²éѯ£¬ÆäÖв»°üÀ¨Á¬½Ó²éѯºÍ×Ó²éѯ£»PRIMARY ±íʾÖ÷²éѯ£¬»òÕßÊÇ×îÍâ²ãµÄ²éѯÓï¾ä£»UNION
±íʾÁ¬½Ó²éѯµÄµÚ¶þ¸ö»òºóÃæµÄ²éѯÓï¾ä
table : ±íʾ²éѯµÄ±í
type : ±íʾ±íµÄÁ¬½ÓÀàÐÍ¡£¸Ã²ÎÊýÓм¸¸ö³£ÓõÄȡֵ£¬¼´ system ±íʾ±íÖÐÖ»ÓÐÒ»Ìõ¼Ç¼£»const
±íʾ±íÖÐÓжàÌõ¼Ç¼£¬µ«Öµ´Ó±íÖвéѯһÌõ¼Ç¼£»ALL ±íʾ¶Ô±í½øÐÐÍêÕûµÄɨÃ裻eq_ref ±íʾ¶à±íÁ¬½Óʱ£¬ºóÃæµÄ±íʾÓÃ
UNIQUE »òÕß PRIMARY KEY£»ref ±íʾ¶à±í²éѯʱ£¬ºóÃæµÄ±íʾÓÃÆÕͨË÷Òý£»unique_subquery
±íʾ×Ó²éѯÖÐʹÓà UNIQUE »òÕß PRIMARY KEY£»index_subquery ±íʾ×Ó²éѯÖÐʹÓÃÆÕͨË÷Òý£»range
±íʾ²éѯÓï¾äÖиø³ö²éѯ·¶Î§£»index ±íʾ¶Ô±íÖеÄË÷Òý½øÐÐÍêÕûµÄɨÃè
possible_keys : ±íʾ²éѯÖпÉÄÜʹÓõÄË÷Òý
key : ±íʾ²éѯʹÓõ½µÄË÷Òý
key_len : ±íʾË÷Òý×ֶεij¤¶È
ref : ±íʾʹÓÃÄĸöÁлò³£ÊýÓëË÷ÒýÒ»ÆðÀ´²éѯ¼Ç¼
rows : ±íʾ²éѯµÄÐÐÊý
Extra : ±íʾ²éѯ¹ý³ÌµÄ¸½¼ÓÐÅÏ¢
2> Ë÷Òý²éѯ
<1> ʹÓà LIKE ¹Ø¼ü×Ö²éѯʱ£¬ÈôÆ¥Åä×Ö·û´®µÄµÚÒ»¸ö×Ö·ûΪ % ʱ£¬Ë÷Òý²»»á±»Ê¹Óã¬Èç¹û²»ÔÚµÚÒ»¸öλÖã¬Ë÷Òý¾Í»á±»Ê¹ÓÃ
<2> ¶àÁÐË÷ÒýÊÇÔÚ±íµÄ¶à¸ö×Ö¶ÎÉÏ´´½¨Ò»¸öË÷Òý£¬Ö»ÓвéѯÌõ¼þÖÐʹÓÃÕâЩ×Ö¶ÎÖеÚÒ»¸ö×Ö¶Îʱ£¬Ë÷Òý²Å»á±»Ê¹ÓÃ
<3> ²éѯÓï¾äÖ»ÓÐ OR ¹Ø¼ü×Öʱ£¬Èô OR ǰºóÁ½¸öÌõ¼þµÄÁж¼ÊÇË÷Òýʱ²éѯÖн«Ê¹ÓÃË÷Òý£¬Èô
OR ǰºóÓÐÒ»¸öÌõ¼þµÄÁв»ÊÇË÷Òý£¬ÄÇô²éѯÖн«²»»áʹÓÃË÷Òý
<4>Ó¦¾¡Á¿±ÜÃâÔÚWHERE×Ó¾äÖжÔ×ֶνøÐÐNULLÖµÅжϣ¬·ñÔò½«µ¼ÖÂÒýÇæ·ÅÆúʹÓÃË÷Òý¶ø½øÐÐÈ«±íɨÃè
<5>ʹÓöàÁÐË÷ÒýʱÖ÷Òâ˳ÐòºÍ²éѯÌõ¼þ±£³ÖÒ»Ö£¬Í¬Ê±É¾³ý²»±ØÒªµÄµ¥ÁÐË÷Òý
<6>¾¡Á¿±ÜÃâÔÚWHERE×Ó¾äÖÐʹÓà != »ò <>²Ù×÷·û£¬·ñÔò½«ÒýÇæ·ÅÆúʹÓÃË÷Òý¶ø½øÐÐÈ«±íɨÃè
3> ÓÅ»¯×Ó²éѯ : ×Ó²éѯʱ£¬ÏµÍ³ÄÚ²ã²éѯÓï¾äµÄ²éѯ½á¹û½¨Á¢Ò»¸öÁÙʱ±í£¬È»ºóÍâ²ã²éѯÓï¾äÔÙÔÚÁÙʱ±íÖвéѯ¼Ç¼£¬²éѯÍê³Éºó³·ÏúµôÕâЩÁÙʱ±í£¬Òò´ËʹÓÃÁ¬½Ó²éѯÀ´´úÌæ×Ó²éѯ£¬ÕâÊÇÓÉÓÚÁ¬½Ó²éѯ²»ÐèÒª½¨Á¢ÁÙʱ±í£¬ÆäËٶȱÈ×Ó²éѯҪ¿ì
<1> ½«×ֶκܶàµÄ±í·Ö½â³É¶à¸ö±í : ÓÐЩ±íÔÚÉè¼ÆÁ˺ܶà×ֶΣ¬ÆäÖÐÓÐЩ×Ö¶ÎʹÓÃÆµÂʵͣ¬µ±¸Ã±íÊý¾ÝÁ¿´óʱ£¬²éѯÊý¾ÝµÄËٶȾͻᱻÍÏÂý£¬Òò´Ë½«ÄÇЩʹÓÃÆµÂʺܵ͵Ä×ֶηÅÖÃÔÚÁíÍâÒ»¸ö±íÖÐ(Á½ÍâÒ»¸ö±í¿ÉÒÔÊÇ
*_extra)
<2> Ôö¼ÓÖмä±í : ÔÚ²éѯÁ½¸ö±íÖеö×ֶΣ¬¾³£Á¬±í²éѯ»á½µµÍÊý¾Ý¿â²éѯËÙ¶È£¬¿É½«ÕâЩ×ֶν¨Á¢Ò»¸öÖмä±í²¢½«ÔÀ´ÄǼ¸¸ö±íµÄÊý¾Ý²åÈëµ½Öмä±íÖУ¬Ö®ºóʹÓÃÖмä±íÀ´½øÐвéѯºÍͳ¼Æ£¬ÒÔ´ËÌá¸ß²éѯËÙ¶È
<3> Ôö¼ÓÈßÓà×ֶΣº±íµÄ¹æ·¶»¯³Ì¶ÈÔ½¸ß£¬±íÓë±íÖ®¼äµÄ¹ØÏµ¾ÍÔ½¶à£¬Èô¾³£½øÐжà±íÁ¬½Ó²éѯ»áÀ˷Ѻܶàʱ¼ä£¬¿ÉÔö¼ÓÈßÓà×ֶεķ½Ê½À´Ìá¸ß²éѯËÙ¶È
4> ÓÅ»¯Ò»ÐÐÊý¾ÝµÄ²éѯ£¬ÈôÒÑÖª²éѯ¡¢¸üлòɾ³ý½á¹ûÖ»ÓÐÒ»Ìõ£¬ÔÚ²éѯ¡¢¸üлòɾ³ýÓï¾äÖ®ºóÌí¼Ó
LIMIT 1 ¿ÉÒÔÔÚÊý¾Ý¿âÒýÇæ»áÔÚÕÒµ½Ò»ÌõÊý¾ÝºóÍ£Ö¹ËÑË÷£¬¶ø²»ÊǼÌÐøÍùºó²éÕÒÏÂÒ»Ìõ·ûºÏ¼Ç¼µÄÊý¾Ý
5> ʹÓà JOIN ¼¶Áª²éѯʱ£¬Ó¦¸Ã±£Ö¤Á½±íÖÐ JOIN µÄ×Ö¶ÎÒѽü½¨Á¢¹ýË÷ÒýÇÒÀàÐÍÏàͬ£¬ÕâÑùMySQL
ÄÚ²¿»áÆô¶¯ÓÅ»¯ JOIN µÄ SQLÓï¾äµÄ»úÖÆ£¬Èç : Èç¹ûÒª°Ñ DECIMAL ×ֶκÍÒ»¸ö INT
×Ö¶ÎJOINÔÚÒ»Æð£¬MySQL ¾ÍÎÞ·¨Ê¹ÓÃËüÃǵÄË÷Òý¡£¶ÔÓÚÄÇЩ STRINGÀàÐÍ£¬»¹ÐèÒªÓÐÏàͬµÄ×Ö·û¼¯²ÅÐÐ
6>±ÜÃâ SELECT * ²éѯÊý¾Ý£¬´ÓÊý¾Ý¿âÀï¶Á³öÔ½¶àµÄÊý¾Ý£¬ÄÇô²éѯ¾Í»á±äµÃÔ½Âý²¢ÇÒ£¬Èç¹ûÊý¾Ý¿â·þÎñÆ÷ºÍWEB·þÎñÆ÷ÊÇÁ½Ì¨¶ÀÁ¢µÄ·þÎñÆ÷µÄ»°£¬Õ⻹»áÔö¼ÓÍøÂç´«ÊäµÄ¸ºÔØ¡£ËùÒÔ£¬Ó¦¸ÃÑø³ÉÒ»¸öÐèҪʲô¾ÍȡʲôµÄºÃµÄϰ¹ß
7> ÄÜʹÓà ENUM ¶ø¾Í²»ÒªÊ¹Óà VARCHAR£¬ENUMÀàÐÍÊǷdz£¿ìºÍ½ô´ÕµÄ£¬Êµ¼ÊÉÏ
ENUM ±£´æµÄÊÇ TINYINT£¬µ«ÆäÍâ±íÉÏÏÔʾΪ×Ö·û´®¡£ÕâÑùÓÃÕâ¸ö×Ö¶ÎÀ´×öһЩѡÏîÁбí±äµÃÏ൱µÄÍêÃÀ¡£Èç¹ûÓÐÒ»¸ö×ֶΣ¬±ÈÈç¡°ÐԱ𡱣¬¡°¹ú¼Ò¡±£¬¡°Ãñ×塱£¬¡°×´Ì¬¡±»ò¡°²¿ÃÅ¡±£¬ÕâЩ×ֶεÄȡֵÊÇÓÐÏÞ¶øÇҹ̶¨µÄ£¬ÄÇô£¬ÄãÓ¦¸ÃʹÓÃ
ENUM ¶ø²»ÊÇ VARCHAR
8> ´Ó PROCEDURE ANALYSE() È¡µÃ½¨Òé £ºPROCEDURE ANALYSE()
»áÈà MySQL °ïÄãÈ¥·ÖÎöÄãµÄ×Ö¶ÎºÍÆäʵ¼ÊµÄÊý¾Ý£¬²¢»á¸øÄãһЩÓÐÓõĽ¨Òé¡£Ö»ÓбíÖÐÓÐʵ¼ÊµÄÊý¾Ý£¬ÕâЩ½¨Òé²Å»á±äµÃÓÐÓã¬ÒòΪҪ×öһЩ´óµÄ¾ö¶¨ÊÇÐèÒªÓÐÊý¾Ý×÷Ϊ»ù´¡
PROCEDURE ANALYSE() Óï·¨ÈçÏ :
SELECT ... FROM
... WHERE ... PROCEDURE ANALYSE([max_elements,[max_memory]])
max_elements : (ĬÈÏÖµ256) analyze ²éÕÒÿһÁв»Í¬ÖµÊ±ËùÐè¹Ø×¢µÄ×î´ó²»Í¬ÖµµÄÊýÁ¿£¬analyze
»¹ÓÃÕâ¸öÖµÀ´¼ì²éÓÅ»¯µÄÊý¾ÝÀàÐÍÊÇ·ñ¸ÃÊÇ ENUM£¬Èç¹û¸ÃÁеIJ»Í¬ÖµµÄÊýÁ¿³¬¹ýmax_elementsÖµ
ENUM ¾Í²»×öΪ½¨ÒéÓÅ»¯µÄÊý¾ÝÀàÐÍ
max_memory : (ĬÈÏÖµ8192) analyze ²éÕÒÿһÁÐËùÓв»Í¬ÖµÊ±¿ÉÄÜ·ÖÅäµÄ×î´óµÄÄÚ´æÊýÁ¿
|
mysql> DESC
user_account;
+-----------+------------------+------+-----+---------+----------------+
| Field| Type| Null | Key |
Default | Extra|
+-----------+------------------+------+-----+---------+----------------+
| USERID| int(10) unsigned | NO| PRI |
NULL| auto_increment |
| USERNAME| varchar(10)| NO||
NULL||
| PASSSWORD | varchar(30)| NO||
NULL||
| GROUPNAME | varchar(10)| YES||
NULL||
+-----------+------------------+------+-----+---------+----------------+
4 rows in set (0.00 sec)
mysql> select * from user_account PROCEDURE
ANALYSE(1)\G
*************************** 1. row ***************************
Field_name: ibatis.user_account.USERID
Min_value: 1
Max_value: 103
Min_length: 1
Max_length: 3
Empties_or_zeros: 0
Nulls: 0
Avg_value_or_avg_length: 51.7500
Std: 50.2562
Optimal_fieldtype: TINYINT(3) UNSIGNED NOT
NULL
*************************** 2. row ***************************
Field_name: ibatis.user_account.USERNAME
Min_value: dfsa
Max_value: LMEADORS
#analyze ·ÖÎö ibatis.user_account.USERID ÁÐ×îСֵ1£¬×î´óÖµ103£¬×îС³¤¶È1£¬×î´ó³¤¶È3µÈÐÅÏ¢£¬²¢¸ø³öÐÞ¸Ä×ֶεÄÓÅ»¯½¨Òé
: ½¨Ò齫¸Ã×ֶεÄÊý¾ÝÀàÐÍ¸Ä³É TINYINT(3) UNSIGNED NOT NULL
|
9> ¾¡¿ÉÄܵÄʹÓà NOT NULL£ºNULL»áÕ¼ÓöîÍâµÄ¿Õ¼äÀ´¼Ç¼ÆäÖµÊÇ·ñΪ¿Õ£¬¶ÔÓÚ MyISAM±í
ÿ¸ö¿ÕÁж¼ÐèÒª¶îÍâµÄÒ»¸ö×Ö½Ú²¢½«ÆäËÄÉáÎåÈëµ½×î½üµÄ×Ö½Ú¡£MySQLÄÑÒÔÓÅ»¯ÒýÓÿɿÕÁвéѯ£¬Ëü»áʹË÷Òý¡¢Ë÷Òýͳ¼ÆºÍÖµ¸ü¼Ó¸´ÔÓ
¿É¿ÕÁб»Ë÷Òýºó£¬Ã¿Ìõ¼Ç¼¶¼ÐèÒªÒ»¸ö¶îÍâµÄ×Ö½Ú£¬»¹Äܵ¼Ö MyISAM Öй̶¨´óСµÄË÷Òý±ä³É¿É±ä´óСµÄË÷Òý¡£ÔÚ½øÐбȽϵÄʱºò»áÊdzÌÐò¸ü¸´ÔÓ£¬ÆäËù´ú±íµÄÒâÒåÔÚ²»Í¬µÄÊý¾Ý¿âÖлáÓÐËù²»Í¬¿ÓÊÇ×Ö·û´®
"Empty"¡¢"NULL"»òÊÇNULL£¬Òò´Ë¾¡Á¿Ê¹Óà NOT
NULL
<1>ËùÓÐʹÓà NULLÖµµÄÇé¿ö£¬¶¼¿ÉÒÔͨ¹ýÒ»¸öÓÐÒâÒåµÄÖµÀ´´úÌæ£¬ÕâÑùÓÐÀûÓÚ´úÂëµÄ¿É¶ÁÐԺͿÉά»¤ÐÔ£¬²¢ÄÜ´ÓÔ¼ÊøÉÏÔöǿҵÎñÊý¾ÝµÄ¹æ·¶ÐÔ
<2> NULLÖµ µ½ ·ÇNULL µÄ¸üÐÂÎÞ·¨×öµ½ÔµØ¸üУ¬¸üÈÝÒ×·¢ÉúË÷Òý·ÖÁÑ£¬´Ó¶øÓ°ÏìÐÔÄÜ
×¢ :°Ñ NULLÁÐ ¸ÄΪ NOT NULL ´øÀ´µÄÐÔÄÜÌáÉýºÜС£¬³ý·ÇÈ·¶¨Ëü´øÀ´ÁËÎÊÌ⣬·ñÔò²»Òª°ÑËüµ±³ÉÓÅÏȵÄÓÅ»¯´ëÊ©£¬×îÖØÒªµÄÊÇʹÓõÄÁеÄÀàÐ͵ÄÊʵ±ÐÔ
<3>NULLÖµ ÔÚ timestampÀàÐÍ ÏÂÈÝÒ׳öÎÊÌâ£¬ÌØ±ðÊÇûÓÐÆôÓòÎÊý explicit_defaults_for_timestamp
<4>NOT IN¡¢!= µÈ¸ºÏòÌõ¼þ²éѯÔÚÓÐ NULL ÖµµÄÇé¿öÏ·µ»ØÓÀԶΪ¿Õ½á¹û£¬²éѯÈÝÒ׳ö´í
mysql>CREATE
TABLE table_2(id INT(11) NOT NULL,user_name
VARCHAR(20) NOT NULL);
mysql>CREATE TABLE table_3(id INT(11) NOT
NULL,user_name VARCHAR(20));
mysql>INSERT INTO table_2 VALUES(4,'zhaoliu_2_1'),(2,'lisi_2_1'), (3,'wangmazi_2_1'),(1,'zhangsan_2'), (2,'lisi_2_2'),(4,'zhaoliu_2_2'),(3,'wangmazi_2_2');
mysql>INSERTINTO table_3 VALUES(1,"zhaoliu_2_1"),(2,
null);
#NOT IN×Ó²éѯÔÚÓÐNULLÖµµÄÇé¿öÏ·µ»ØÓÀԶΪ¿Õ½á¹û£¬²éѯÈÝÒ׳ö´í
mysql> SELECT user_name FROM table_2 WHERE
user_name NOT IN (SELECT user_name FROMtable_3 WHEREid!=1);
Empty set (0.00 sec)
# µ¥ÁÐË÷Òý²»´æ NULLÖµ£¬¸´ºÏË÷Òý²»´æÈ«Îª NULLÖµ£¬Èç¹ûÁÐÔÊÐíΪ NULL£¬ ¿ÉÄÜ»áµÃµ½¡°²»·ûºÏÔ¤ÆÚ¡±µÄ½á¹û¼¯
# Èç¹ûnameÔÊÐíΪNULL£¬Ë÷Òý²»´æ´¢ NULLÖµ£¬½á¹û¼¯Öв»»á°üº¬ÕâЩ¼Ç¼¡£ ËùÒÔ£¬ÇëʹÓà NOT NULLÔ¼ÊøÒÔ¼°Ä¬ÈÏÖµ
mysql> SELECT* FROMtable_3 WHEREuser_name!='zhaoliu_2_1';
Empty set (0.00 sec)
#Èç¹ûÔÚÁ½¸ö×ֶνøÐÐÆ´½Ó : ±ÈÈçÌâºÅ+·ÖÊý£¬Ê×ÏÈÒª¸÷×ֶνøÐзÇnullÅжϣ¬ ·ñÔòÖ»ÒªÈÎÒâÒ»¸ö×Ö¶ÎΪ¿Õ¶¼»áÔì³ÉÆ´½ÓµÄ½á¹ûΪnull
mysql> SELECTCONCAT("1",null);
+------------------+
| CONCAT("1",null) |
+------------------+
| NULL|
+------------------+
1 row in set (0.00 sec)
# Èç¹ûÓÐ NULL column ´æÔÚµÄÇé¿öÏ£¬count(NULL column)ÐèÒª¸ñÍâ×¢Ò⣬ NULL Öµ²»»á²ÎÓëͳ¼Æ
mysql> SELECT* FROM table_3;
+----+-------------+
| id | user_name|
+----+-------------+
|1 | zhaoliu_2_1 |
|2 | NULL|
+----+-------------+
2 rows in set (0.00 sec)
mysql> SELECTCOUNT(user_name) FROM table_3;
+------------------+
| count(user_name) |
+------------------+
|1 |
+------------------+
1 row in set (0.00 sec)
#×¢Òâ NULL×ֶεÄÅжϷ½Ê½£¬= NULL½«»áµÃµ½´íÎóµÄ½á¹û
mysql> CREATE INDEX idx_test ON table_3(user_name);
mysql> SELECT * FROM table_3 WHERE user_name
IS NULL;
+----+-----------+
| id | user_name |
+----+-----------+
|2 | NULL|
+----+-----------+
1 row in set (0.00 sec)
mysql> DESC SELECT * FROM table_3 WHERE user_name='zhaoliu_2_1';
+----+-------------+---------+------------+------+--------------- +----------+---------+-------+------+----------+-------+
| id | select_type | table| partitions |
type | possible_keys | key| key_len | ref| rows | filtered
| Extra |
+----+-------------+---------+------------+------+--------------- +----------+---------+-------+------+----------+-------+
|1 | SIMPLE| table_3 | NULL|
ref| idx_test | idx_test | 23| const |1 |100.00
| NULL|
+----+-------------+---------+------------+------+--------------- +----------+---------+-------+------+----------+-------+
1 row in set, 1 warning (0.00 sec)
mysql> DESC SELECT * FROM table_3 WHERE user_name=null;
+----+-------------+-------+------------+------+--------------- +------+---------+------+------+----------+--------------------------------+
| id | select_type | table | partitions | type
| possible_keys | key| key_len | ref| rows | filtered |
Extra|
+----+-------------+-------+------------+------+--------------- +------+---------+------+------+----------+--------------------------------+
|1 | SIMPLE| NULL| NULL| NULL
| NULL| NULL | NULL| NULL | NULL
|NULL | no matching row in const table
|
+----+-------------+-------+------------+------+--------------- +------+---------+------+------+----------+--------------------------------+
1 row in set, 1 warning (0.00 sec)
mysql> DESC SELECT * FROM table_3 WHERE user_name
IS NULL;
+----+-------------+---------+------------+------+--------------- +----------+---------+-------+------+----------+-----------------------+
| id | select_type | table| partitions |
type | possible_keys | key| key_len |
ref| rows | filtered | Extra|
+----+-------------+---------+------------+------+--------------- +----------+---------+-------+------+----------+-----------------------+
|1 | SIMPLE| table_3 | NULL|
ref| idx_test| idx_test | 23|
const |1 |100.00 | Using index condition
|
+----+-------------+---------+------------+------+--------------- +----------+---------+-------+------+----------+-----------------------+
1 row in set, 1 warning (0.00 sec)
<5>Null ÁÐÐèÒª¸ü¶àµÄ´æ´¢¿Õ¼ä : ÐèÒªÒ»¸ö¶îÍâ×Ö½Ú×÷ΪÅжÏÊÇ·ñΪ
NULL µÄ±ê־λ
mysql> ALTER TABLE table_3 ADD INDEX idx_user_name(user_name);
mysql> ALTERTABLE table_2 ADD INDEXidx_user_name(user_name);
mysql> EXPLAIN SELECT * FROM table_2 WHERE
user_name='zhaoliu_2_1';
+----+-------------+---------+------------+------+--------------- +---------------+---------+-------+------+----------+-------+
| id | select_type | table| partitions |
type | possible_keys | key| key_len
| ref| rows | filtered | Extra |
+----+-------------+---------+------------+------+--------------- +---------------+---------+-------+------+----------+-------+
|1 | SIMPLE| table_2 | NULL|
ref| idx_user_name | idx_user_name | 22| const |1 |100.00 | NULL|
+----+-------------+---------+------------+------+--------------- +---------------+---------+-------+------+----------+-------+
1 row in set, 1 warning (0.00 sec)
mysql> EXPLAIN SELECT * FROM table_3 WHERE
user_name='zhaoliu_2_1';
+----+-------------+---------+------------+------+------------------------ +----------+---------+-------+------+----------+-------+
| id | select_type | table| partitions |
type | possible_keys | key| key_len | ref| rows | filtered
| Extra |
+----+-------------+---------+------------+------+------------------------ +----------+---------+-------+------+----------+-------+
|1 | SIMPLE| table_3 | NULL|
ref| idx_test,idx_user_name | idx_test | 23| const |1 |100.00
| NULL|
+----+-------------+---------+------------+------+------------------------ +----------+---------+-------+------+----------+-------+
1 row in set, 1 warning (0.00 sec)
|
¿ÉÒÔ¿´µ½Í¬ÑùµÄ varchar(20) ³¤¶È£¬table_2 Òª±È table_3 Ë÷Òý³¤¶È´ó£¬ÕâÊÇÒòΪ
: Á½ÕűíµÄ×Ö·û¼¯²»Ò»Ñù£¬ÇÒ×Ö¶ÎÒ»¸öΪ NULL Ò»¸ö·Ç NULL
key_len µÄ¼ÆËã¹æÔòºÍÈý¸öÒòËØÓÐ¹Ø : Êý¾ÝÀàÐÍ¡¢×Ö·û±àÂë¡¢ÊÇ·ñΪ NULL
table_3 ½¨Á¢µÄË÷ÒýÔÚ¿Õ¼äÏûºÄÉÏÃæÐèÒªÔö¼Ó¶îÍâÒ»¸ö×Ö½Ú´æ´¢Êý¾ÝÊÇ·ñΪ NULL£¬ËùÒÔ˵Ë÷Òý×Ö¶Î×îºÃ²»ÒªÎª
NULL£¬ÒòΪ NULL»áʹË÷Òý¡¢Ë÷Òýͳ¼ÆºÍÖµ¸ü¼Ó¸´ÔÓ£¬²¢ÇÒÐèÒª¶îÍâÒ»¸ö×ֽڵĴ洢¿Õ¼ä¡£»ùÓÚÒÔÉÏÕâЩÀíÓɺÍÔÒò£¬ËùÒÔ²»½¨ÒéʹÓÃ
NULL
10> °Ñ IPµØÖ· ´æ³É INTUNSIGNED£»Èç¹ûÓÃÕûÐÎÀ´´æ·Å£¬Ö»ÐèÒª4¸ö×Ö½Ú£¬²¢ÇÒÄã¿ÉÒÔÓж¨³¤µÄ×ֶΡ£¶øÇÒ£¬Õâ»áΪÄã´øÀ´²éѯÉϵÄÓÅÊÆ£¬ÓÈÆäÊǵ±ÐèҪʹÓÃÕâÑùµÄ
WHEREÌõ¼þ : IP between ip1 and ip2
ÅäºÏʹÓúóÃæÁ½¸öº¯ÊýÀ´×ª»»ipÐÅÏ¢ : INET_ATON£º½« IPµØÖ· ת»»³ÉÊý×ÖÐÍ
INET_NTOA£º½«Êý×ÖÐÍת»»³ÉIPµØÖ·
11> ²ð·Ö´óµÄ DELETE »ò INSERT Óï¾ä£ºÓÉÓÚDELETEºÍ
INSERT²Ù×÷ʱ»áËø±íµÄ£¬±íÒ»Ëø×¡±ðµÄ²Ù×÷¶¼ÎÞ·¨½øÐУ¬¶ÔÓÚ·ÃÎÊÁ¿´óµÄÍøÕ¾Ëù»ýÀÛ ½ø³Ì/Ïß³Ì µÄÑÓ³Ù»áÈÃWeb·þÎñCrash£¬»¹»áʹÕâ¸ö·þÎñÆ÷¹Òµô£¬Òò´ËÏÞÖÆÒ»´Î¶ÔÊý¾Ý¿âÊý¾ÝÐ޸ĵĴÎÊý£¬¶ÔDELETE²ÉÓÃLIMT
12> ԽСµÄÁлáÔ½¿ì£ºÈç¹ûÒ»¸ö±íÖ»»áÓм¸ÁаÕÁË (±ÈÈç˵×Öµä±í£¬ÅäÖñí)£¬ÄÇô£¬¾ÍûÓÐÀíÓÉʹÓÃ
INT À´×öÖ÷¼ü£¬Ê¹Óà MEDIUMINT, SMALLINT »òÊǸüСµÄ TINYINT »á¸ü¾¼ÃһЩ¡£Èç¹û²»ÐèÒª¼Ç¼ʱ¼ä£¬Ê¹ÓÃ
DATE Òª±È DATETIME ºÃµÃ¶à
×¢ : ÐèÒªÁô¹»×ã¹»µÄÀ©Õ¹¿Õ¼ä£¬·ñÔòÈÕºóÐ޸ıíʱ»áºÜÀ§ÄÑ
13> ¶Ô±íÑ¡ÔñÕýÈ·µÄ´æ´¢ÒýÇæ£º
MyISAM : ÊʺÏÓÚһЩÐèÒª´óÁ¿²éѯµÄÓ¦Ó㬵«Æä¶ÔÓÚÓдóÁ¿Ð´²Ù×÷²¢²»ÊǺܺã¬ÉõÖÁÖ»ÊÇÐèÒª
update Ò»¸ö×ֶΣ¬Õû¸ö±í¶¼»á±»ËøÆðÀ´£¬¶ø±ðµÄ½ø³Ì£¬¾ÍËãÊǶÁ½ø³Ì¶¼ÎÞ·¨²Ù×÷Ö±µ½¶Á²Ù×÷Íê³É¡£ÁíÍ⣬MyISAM
¶ÔÓÚ SELECT COUNT(*) ÕâÀàµÄ¼ÆËãÊdz¬¿ìÎޱȵÄ
InnoDB : ÊÇÒ»¸ö·Ç³£¸´ÔӵĴ洢ÒýÇæ£¬¶ÔÓÚһЩСµÄÓ¦Óã¬Ëü»á±È MyISAM »¹Âý¡£ËûÊÇËüÖ§³Ö¡°ÐÐËø¡±
£¬ÓÚÊÇÔÚд²Ù×÷±È½Ï¶àµÄʱºò£¬»á¸üÓÅÐã¡£²¢ÇÒ£¬Ëû»¹Ö§³Ö¸ü¶àµÄ¸ß¼¶Ó¦Ó㬱ÈÈ磺ÊÂÎñ
14> ÓÅ»¯²åÈë¼Ç¼µÄËÙ¶È
<1> ½ûÓÃË÷Òý : ²åÈë¼Ç¼ʱË÷Òý»á¶Ô²åÈëµÄ¼Ç¼½øÐÐÅÅÐò£¬Èô²åÈë´óÁ¿Êý¾Ýʱ£¬ÕâЩÅÅÐò»á½µµÍ²åÈëÊý¾ÝµÄËÙ¶È£¬Òò´ËÔÚ²åÈë´óÁ¿Êý¾Ýʱ£¬ÏȽûÓÃË÷Òý£¬´ý²åÈëÊý¾ÝÍê±ÏÔÙ¿ªÆôË÷Òý
½ûÓÃË÷ÒýµÄÓï¾ä : ALTER TABLE ±íÃû DISABLE KEYS;
ÖØÐ¿ªÆôË÷ÒýµÄÓï¾ä : ALTER TABLE ±íÃû ENABLE KEYS;
<2> ½ûÓÃΨһÐÔ¼ì²é : ²åÈë¼Ç¼ʱϵͳ»á½øÐÐΨһÐÔУÑ飬УÑé»á½µµÍ²åÈë¼Ç¼µÄËÙ¶È£¬¿ÉÒÔÔÚ²åÈë¼Ç¼֮ǰ½ûÓÃΨһÐÔ¼ì²é£¬´ý²åÈëÊý¾ÝÍê±ÏÔÙ¿ªÆô
½ûÓÃΨһÐÔ¼ì²éµÄÓï¾ä :SET UNIQUE_CHECKS=0;
ÖØÐ¿ªÆôΨһÐÔ¼ì²éµÄÓï¾ä :SET UNIQUE_CHECKS=1;
<3> ÓÅ»¯INSERTÓï¾ä : µ±²åÈë¶àÌõÊý¾Ýʱ£¬Í¨¹ýÒ»Ìõ²åÈëÓï¾ä±È·Ö¶àÌõ²åÈëÓï¾äÖ´ÐÐЧÂÊËÙ¶È¿ìºÜ¶à£¬ÕâÊÇÓÉÓÚ¼õÉÙÓëÊý¾Ý¿âÖ®¼äµÄÁ¬½ÓµÈ²Ù×÷£¬Òò´ËÄÜʹÓÃ
LOAD DATA INFILEÓï¾ä±È INSERTÓï¾äËÙ¶È¿ì
<4>ÔÚÊÂÎñÖнøÐвåÈë´¦Àí£¬½øÐÐÒ»¸ö INSERT ²Ù×÷ʱ£¬MySQLÄÚ²¿»á½¨Á¢Ò»¸öÊÂÎñ£¬ÔÚÊÂÎñÄڲŽøÐÐÕæÕý²åÈë´¦Àí²Ù×÷¡£Í¨¹ýʹÓÃÊÂÎñ¿ÉÒÔ¼õÉÙ´´½¨ÊÂÎñµÄÏûºÄ£¬ËùÓвåÈë¶¼ÔÚÖ´Ðкó²Å½øÐÐÌá½»²Ù×÷£¬Òò´Ë²ÉÓÃÊÂÎñ²Ù×÷¿ÉÌá¸ß²åÈëÊý¾ÝµÄËÙ¶È
<5> ²åÈëÊý¾ÝÊÇÓÐÐòµÄ£¬ÕâÑù¿É¼õÉÙË÷ÒýµÄά»¤³É±¾
×¢ :ºÏ²¢Êý¾Ý+ÊÂÎñ+ÓÐÐòÊý¾ÝµÄ·½Ê½ÔÚÊý¾ÝÁ¿´ïµ½Ç§Íò¼¶ÒÔÉϱíÏÖÒÀ¾ÉÊÇÁ¼ºÃ£¬ÔÚÊý¾ÝÁ¿½Ï´óʱ£¬ÓÐÐòÊý¾ÝË÷Òý¶¨Î»½ÏΪ·½±ã£¬²»ÐèҪƵ·±¶Ô´ÅÅ̽øÐжÁд²Ù×÷£¬ËùÒÔ¿ÉÒÔά³Ö½Ï¸ßµÄÐÔÄÜ
15> ·ÖÎö±í¡¢¼ì²é±íºÍÓÅ»¯±í
<1>·ÖÎö±í£¬Óï·¨¸ñʽ : ANALYZE TABLE ±íÃû1[,±íÃû2,...];
·µ»ØµÄ½á¹û
Table : ±íʾ±íµÄÃû³Æ
Op : ±íʾִÐеIJÙ×÷£»analyze ±íʾ½øÐзÖÎö²Ù×÷£»check ±íʾ½øÐмì²é²éÕÒ£»optimize
±íʾ½øÐÐÓÅ»¯²Ù×÷
Msg_type : ±íʾÐÅÏ¢ÀàÐÍ£¬ÆäÏÔʾµÄֵͨ³£ÊÇ״̬¡¢¾¯¸æ¡¢´íÎóºÍÐÅÏ¢ÕâËÄÕßÖ®Ò»
Msg_text : ÏÔʾÐÅÏ¢
<2>¼ì²é±í£¬Óï·¨¸ñʽ : CHECK TABLE ±íÃû1[,±íÃû2...][option];
option²ÎÊýÓÐ5¸ö²ÎÊý·Ö±ðÊÇ QUICK¡¢FAST¡¢CHANGED¡¢MEDIUMºÍEXTENDED£¬Õâ5¸ö²ÎÊýµÄÖ´ÐÐЧÂÊÒÀ´Î½µµÍ
×¢ : optionÑ¡ÏîÖ»¶Ô MyISAM ÀàÐ͵ıíÓÐЧ£¬¶Ô InnoDBÀàÐ͵ıíÎÞЧ£¬CHECK
TABLEÓï¾äÔÚÖ´Ðйý³ÌÖÐ»á¸ø±í¼ÓÉÏÖ»¶ÁËø
<3> ÓÅ»¯±í£¬Ê¹ÓÃOPTIMIZE TABLEÓï¾äÀ´ÓÅ»¯±í£¬¸ÃÓï¾äÖ»¶Ô InnoDB
ºÍ MyISAMÀàÐ͵ıíÓÐЧ£¬ÇÒ¸ÃÓï¾äÖ»ÄÜÓÅ»¯VARCHAR¡¢BLOB»òTEXTÀàÐ͵Ä×ֶΣ¬¸ÃÓï¾ä¿ÉÒÔÏû³ýɾ³ýºÍ¸üÐÂÔì³ÉµÄ´ÅÅÌË鯬´Ó¶ø¼õÉÙ¿Õ¼äµÄÀË·Ñ£¬Óï·¨¸ñʽ
: OPTIMIZE TABLE ±íÃû1[,±íÃû2...];
16>¾¡Á¿Ê¹Óà TIMESTAMP ¶ø ·ÇDATETIME
17> ²»ÓÃÍâ¼ü£¬ÓɳÌÐò±£Ö¤Ô¼Êø£»¾¡Á¿²»ÓÃUNIQUE£¬ÓɳÌÐò±£Ö¤Ô¼Êø
18>OR¸Äд³ÉIN : ORµÄЧÂÊÊÇn¼¶±ð£¬INµÄЧÂÊÊÇ log(n)¼¶±ð£¬inµÄ¸öÊý½¨Òé¿ØÖÆÔÚ200ÒÔÄÚ
19>¶ÔÓÚÁ¬ÐøÊýÖµ£¬Ê¹Óà BETWEEN ²»Óà IN : SELECT id FROM t
WHERE num BETWEEN 1 AND 5
20> ÓÅ»¯ MySQL·þÎñÆ÷£¬²ÉÓÃÊý¾Ý¿âÖ÷´ÓµÄÐÎʽ½«Êý¾Ý¿â½øÐжÁд·ÖÀë
21>¾«È·¶ÈÓë¿Õ¼äµÄת»»¡£ÔÚ´æ´¢ÏàͬÊýÖµ·¶Î§µÄÊý¾Ýʱ£¬¸¡µãÊýÀàÐÍͨ³£¶¼»á±È DECIMALÀàÐÍʹÓøüÉٵĿռ䡣FLOAT×Ö¶ÎʹÓÃ4×Ö½Ú´æ´¢Êý¾Ý¡£DOUBLEÀàÐÍÐèÒª8¸ö×Ö½Ú²¢ÓµÓиü¸ßµÄ¾«È·¶ÈºÍ¸ü´óµÄÊýÖµ·¶Î§£¬DECIMALÀàÐ͵ÄÊý¾Ý½«»áת»»³ÉDOUBLEÀàÐÍ
22>ϵͳÅäÖÃÓëά»¤ÓÅ»¯
<1> ÖØÒªµÄһЩ±äÁ¿
key_buffer_size Ë÷Òý¿é»º´æÇø´óС£¬Õë¶Ô MyISAM´æ´¢ÒýÇæ£¬¸ÃÖµÔ½´ó£¬ÐÔÄÜÔ½ºÃ£¬µ«Êdz¬¹ý²Ù×÷ϵͳÄܳÐÊܵÄ×î´óÖµ£¬·´¶ø»áʹ
mysql ±äµÃ²»Îȶ¨
sort_buffer_size ÕâÊÇË÷ÒýÔÚÅÅÐò»º³åÇø´óС£¬ÈôÅÅÐòÊý¾Ý´óС³¬¹ý¸ÃÖµ£¬Ôò´´½¨ÁÙʱÎļþ£¬×¢ÒâºÍ
myisam_sort_buffer_sizeµÄÇø±ð
read_rnd_buffer_size µ±ÅÅÐòºó°´ÅÅÐòºóµÄ˳Ðò¶ÁÈ¡ÐÐʱ£¬Ôòͨ¹ý¸Ã»º³åÇø¶ÁÈ¡ÐУ¬±ÜÃâËÑË÷Ó²ÅÌ¡£½«¸Ã±äÁ¿ÉèÖÃΪ½Ï´óµÄÖµ¿ÉÒÔ´ó´ó¸Ä½ø
ORDER BY µÄÐÔÄÜ¡£µ«ÊÇ£¬ÕâÊÇΪÿ¸ö¿Í»§¶Ë·ÖÅäµÄ»º³åÇø£¬Òò´ËÄã²»Ó¦½«È«¾Ö±äÁ¿ÉèÖÃΪ½Ï´óµÄÖµ¡£Ïà·´£¬Ö»ÎªÐèÒªÔËÐдó²éѯµÄ¿Í»§¶Ë¸ü¸Ä»á»°±äÁ¿
join_buffer_size ÓÃÓÚ±í¼ä¹ØÁª(join)µÄ»º´æ´óС
tmp_table_size »º´æ±íµÄ´óС
table_cache ÔÊÐí MySQL ´ò¿ªµÄ±íµÄ×î´ó¸öÊý£¬²¢ÇÒÕâЩ¶¼ cache ÔÚÄÚ´æÖÐ
delay_key_write Õë¶Ô MyISAM´æ´¢ÒýÇæ£¬ÑÓ³Ù¸üÐÂË÷Òý£¬Òâ˼ÊÇ˵£¬update¼Ç¼ʱ£¬ÏȽ«Êý¾Ýupµ½´ÅÅÌ£¬µ«²»upË÷Òý£¬½«Ë÷Òý´æÔÚÄÚ´æÀµ±±í¹Ø±Õʱ£¬½«ÄÚ´æË÷Òý£¬Ð´µ½´ÅÅÌ
22> ÆäËû¼¼ÇÉ
<1> ¾¡Á¿Ê¹ÓÃcount(*) ¼ÆËãÊýÁ¿ :ÁÐµÄÆ«ÒÆÁ¿¾ö¶¨ÐÔÄÜ£¬ÁÐÔ½¿¿ºó£¬·ÃÎʵĿªÏúÔ½´ó¡£ÓÉÓÚcount(*)
µÄËã·¨ÓëÁÐÆ«ÒÆÁ¿Î޹أ¬ËùÒÔ count(*) ×î¿ì£¬count(×îºóÁÐ)×îÂý
<2>µ¥ÊµÀý»òÕßµ¥½Úµã×é :×ÔÔöIDÏà¶ÔUUIDÀ´Ëµ£¬×ÔÔöIDÖ÷¼üÐÔÄܸßÓÚUUID£¬´ÅÅÌ´æ´¢·ÑÓñÈUUID½Úʡһ°ëµÄÇ®£¬ËùÒÔÔÚµ¥ÊµÀýÉÏ»òÕßµ¥½Úµã×éÉÏ£¬Ê¹ÓÃ×ÔÔö
ID ×÷ΪÊ×Ñ¡Ö÷¼ü
·Ö²¼Ê½¼Ü¹¹³¡¾° : 20¸ö½Úµã×éϵÄСÐ͹æÄ£µÄ·Ö²¼Ê½³¡¾°£¬ÎªÁË¿ìËÙʵÏÖ²¿Ê𣬿ÉÒÔ²ÉÓö໨´æ´¢·ÑÓá¢ÎþÉü²¿·ÖÐÔÄܶøÊ¹ÓÃ
UUID Ö÷¼ü¿ìËÙ²¿Êð£»20µ½200¸ö½Úµã×éµÄÖеȹæÄ£µÄ·Ö²¼Ê½³¡¾°£¬¿ÉÒÔ²ÉÓà ×ÔÔöID+²½³¤µÄ½Ï¿ìËÙ·½°¸£»200ÒÔÉϽڵã×éµÄ´óÊý¾Ýϵķֲ¼Ê½³¡¾°£¬¿ÉÒÔ½è¼øÀàËÆ
twitterÑ©»¨Ëã·¨¹¹ÔìµÄÈ«¾Ö ×ÔÔöID ×÷ΪÖ÷¼ü
|