ÀÖÓãµç¾º

½ÌÓýÐÐÒµA¹ÉIPOµÚÒ»¹É£¨¹ÉƱ´úÂë 003032£©

È«¹ú×Éѯ/ͶËßÈÈÏߣº400-618-4000

JavaÅàѵʵս½Ì³ÌÖ®mysqlÓÅ»¯

¸üÐÂʱ¼ä:2015Äê12ÔÂ29ÈÕ13ʱ30·Ö À´Ô´:ÀÖÓã²¥¿ÍJavaÅàѵѧԺ ä¯ÀÀ´ÎÊý:

1.   mysqlÒýÇæ

1.1.  ÒýÇæÀàÐÍ

MySQL³£ÓõĴ洢ÒýÇæÎªMyISAM¡¢InnoDB¡¢MEMORY¡¢MERGE£¬ÆäÖÐInnoDBÌṩÊÂÎñ°²È«±í£¬ÆäËû´æ´¢ÒýÇæ¶¼ÊÇ·ÇÊÂÎñ°²È«±í¡£
MyISAMÊÇMySQLµÄĬÈÏ´æ´¢ÒýÇæ¡£MyISAM²»Ö§³ÖÊÂÎñ¡¢Ò²²»Ö§³ÖÍâ¼ü£¬µ«Æä·ÃÎÊËٶȿ죬¶ÔÊÂÎñÍêÕûÐÔûÓÐÒªÇó¡£
innoDB´æ´¢ÒýÇæÌṩÁ˾ßÓÐÌá½»¡¢»Ø¹öºÍ±ÀÀ£»Ö¸´ÄÜÁ¦µÄÊÂÎñ°²È«¡£µ«ÊÇ±ÈÆðMyISAM´æ´¢ÒýÇæ£¬InnoDBдµÄ´¦ÀíЧÂʲîһЩ²¢ÇÒ»áÕ¼Óøü¶àµÄ´ÅÅ̿ռäÒÔ±£ÁôÊý¾ÝºÍË÷Òý
MEMORY´æ´¢ÒýÇæÊ¹ÓôæÔÚÄÚ´æÖеÄÄÚÈÝÀ´´´½¨±í¡£Ã¿¸öMEMORY±íֻʵ¼Ê¶ÔÓ¦Ò»¸ö´ÅÅÌÎļþ¡£MEMORYÀàÐ͵ıí·ÃÎʷdz£µÃ¿ì£¬ÒòΪËüµÄÊý¾ÝÊÇ·ÅÔÚÄÚ´æÖеÄ£¬²¢ÇÒĬÈÏʹÓÃHASHË÷Òý¡£µ«ÊÇÒ»µ©·þÎñ¹Ø±Õ£¬±íÖеÄÊý¾Ý¾Í»á¶ªÊ§µô¡£
MERGE´æ´¢ÒýÇæÊÇÒ»×éMyISAM±íµÄ×éºÏ£¬ÕâЩMyISAM±í±ØÐë½á¹¹ÍêÈ«Ïàͬ¡£MERGE±í±¾ÉíûÓÐÊý¾Ý£¬¶ÔMERGEÀàÐÍµÄ±í½øÐвéѯ¡¢¸üС¢É¾³ýµÄ²Ù×÷£¬¾ÍÊǶÔÄÚ²¿µÄMyISAM±í½øÐеÄ¡£

1.2.  ÈçºÎÑ¡ÔñºÏÊʵĴ洢ÒýÇæ

Ñ¡Ôñ±ê×¼: ¸ù¾ÝÓ¦ÓÃÌØµãÑ¡ÔñºÏÊʵĴ洢ÒýÇæ,¶ÔÓÚ¸´ÔÓµÄÓ¦ÓÃϵͳ¿ÉÒÔ¸ù¾Ýʵ¼ÊÇé¿öÑ¡Ôñ
¶àÖÖ´æ´¢ÒýÇæ½øÐÐ×éºÏ.
ÏÂÃæÊdz£Óô洢ÒýÇæµÄÊÊÓû·¾³:
1.MyISAM£ºÄ¬È쵀 MySQL ²å¼þʽ´æ´¢ÒýÇæ£¬ËüÊÇÔÚ Web¡¢Êý¾Ý²Ö´¢ºÍÆäËûÓ¦Óû·¾³ÏÂ×ʹÓõĴ洢ÒýÇæÖ®Ò»
2.InnoDB£ºÓÃÓÚÊÂÎñ´¦ÀíÓ¦ÓóÌÐò£¬¾ßÓÐÖÚ¶àÌØÐÔ£¬°üÀ¨ ACID ÊÂÎñÖ§³Ö¡£
3.Memory£º½«ËùÓÐÊý¾Ý±£´æÔÚ RAM ÖУ¬ÔÚÐèÒª¿ìËÙ²éÕÒÒýÓÃºÍÆäËûÀàËÆÊý¾ÝµÄ»·¾³Ï£¬¿ÉÌṩ¼«¿ìµÄ·ÃÎÊ¡£
4.Merge£ºÔÊÐí MySQL DBA »ò¿ª·¢ÈËÔ±½«Ò»ÏµÁеÈͬµÄ MyISAM ±íÒÔÂß¼­·½Ê½×éºÏÔÚÒ»Æð£¬
²¢×÷Ϊ 1 ¸ö¶ÔÏóÒýÓÃËüÃÇ¡£¶ÔÓÚÖîÈçÊý¾Ý²Ö´¢µÈ VLDB »·¾³Ê®·ÖÊʺÏ

2.   ÉèÖøßËÙ»º´æ

×¢£º¿ÉÒÔͨ¹ýorder byÓï¾ä²âÊÔ»º´æ£¬order byÓï¾äÖ´ÐÐËÙ¶ÈÂý£¡

2.1.  ÉèÖøßËÙ»º´æ

2.1.1.   ²é¿´¸ßËÙ»º´æÊÇ·ñÖ§³Ö

SHOW VARIABLES LIKE 'have_query_cache';

2.1.2.   ÉèÖúͲéѯ¸ßËÙ»º´æ´óС

SET GLOBAL query_cache_size = 41984;  #40K
SHOW VARIABLES LIKE 'query_cache_size';
+------------------+-------+
| Variable_name    | Value |
+------------------+-------+
| query_cache_size | 41984 |
+------------------+-------+

2.1.3.   »º´æ¿ªÆôµÄ·½Ê½

²é¿´ÊÇ·ñ¿ªÆô
SHOW VARIABLES LIKE 'query_cache_type';
¿ªÆô
SET SESSION query_cache_type = ON;
 
Èç¹û²éѯ»º´æ´óСÉèÖÃΪ´óÓÚ0£¬query_cache_type±äÁ¿Ó°ÏìÆä¹¤×÷·½Ê½¡£Õâ¸ö±äÁ¿¿ÉÒÔÉèÖÃΪÏÂÃæµÄÖµ£º
0»òOFF£º½«×èÖ¹»º´æ»ò²éѯ»º´æ½á¹û¡£
1»òON£º½«ÔÊÐí»º´æ£¬ÒÔSELECT SQL_NO_CACHE¿ªÊ¼µÄ²éѯÓï¾ä³ýÍâ¡£
2»òDEMAND£º½ö¶ÔÒÔSELECT SQL_CACHE¿ªÊ¼µÄÄÇЩ²éѯÓï¾äÆôÓûº´æ¡£
 
ÁíÍ⣺
GLOBAL£ºÉèÖÃËùÓÐÁ´½ÓµÄ¿Í»§¶Ë
session£ºÉèÖõ¥¸ö¿Í»§¶Ë

2.1.4.   ÉèÖûº´æ½á¹ûµÄ×î´óÖµ×îСֵ

Èç¹û²»ÉèÖûº´æµÄÉÏÏßÏÂÏߣ¬²éѯ½á¹û¹ý´ó½«²»»á»º´æ¡£
²éѯÉÏÏߣº
SHOW VARIABLES LIKE 'query_cache_limit';
ÉèÖÃÉÏÏÂÏߣº
SET GLOBAL query_cache_limit=10485760;            #10M
SET GLOBAL query_cache_min_res_unit=41984;

2.1.5.   ²éѯ¸ßËÙ»º³å״̬ºÍά»¤

¿ÉÒÔʹÓÃÏÂÃæµÄÓï¾ä¼ì²éMySQL·þÎñÆ÷ÊÇ·ñÌṩ²éѯ»º´æ¹¦ÄÜ£º
SHOW VARIABLES LIKE 'have_query_cache';
+------------------+-------+
| Variable_name    | Value |
+------------------+-------+
| have_query_cache | YES   |
+------------------+-------+
FLUSH QUERY CACHE£ºÓï¾äÀ´ÇåÀí²éѯ»º´æË鯬ÒÔÌá¸ßÄÚ´æÊ¹ÓÃÐÔÄÜ¡£¸ÃÓï¾ä²»´Ó»º´æÖÐÒÆ³öÈκβéѯ¡£
RESET QUERY CACHE£ºÓï¾ä´Ó²éѯ»º´æÖÐÒÆ³öËùÓвéѯ¡£FLUSH TABLESÓï¾äÒ²Ö´ÐÐͬÑùµÄ¹¤×÷¡£
SHOW STATUS£ºÎªÁ˼àÊÓ²éѯ»º´æÐÔÄÜ£¬Ê¹ÓÃSHOW STATUS²é¿´»º´æ×´Ì¬±äÁ¿£¬ÀýÈ磺
mysql> SHOW STATUS LIKE 'Qcache%';
+-------------------------+--------+
| Qcache_free_blocks      | 36     |
| Qcache_free_memory      | 138488 |
| Qcache_hits             | 79570  |
| Qcache_inserts          | 27087  |
| Qcache_lowmem_prunes    | 3114   |
| Qcache_not_cached       | 22989  |
| Qcache_queries_in_cache | 415    |
| Qcache_total_blocks     | 912    |
+-------------------------+--------+
QCACHE_free_blocks£º¿ÕÏÐÄÚ´æ¿éµÄÊýÁ¿¡£
QCACHE_free_memory£º¿ÕÏÐÄÚ´æµÄ´óС¡£
QCACHE_hits£º²éѯ»º´æ±»·ÃÎʵĴÎÊý£¨ÃüÖÐÊý£©¡£
QCACHE_inserts£º¼ÓÈëµ½»º´æµÄ²éѯÊýÁ¿¡£
QCACHE_lowmem_prunes£ºÓÉÓÚÄÚ´æ½ÏÉÙ´Ó»º´æÉ¾³ýµÄ²éѯÊýÁ¿¡£
QCACHE_not_cached£º·Ç»º´æ²éѯÊý(²»¿É»º´æ£¬»òÓÉÓÚquery_cache_typeÉ趨ֵ믧´æ)¡£
Qcache_queries_in_cache£ºµÇ¼Çµ½»º´æÄڵIJéѯµÄÊýÁ¿¡£
Qcache_total_blocks£º²éѯ»º´æÄÚµÄ×Ü¿éÊý¡£

2.2.  ¸ßËÙ»º´æÓï¾äÒªÇó

ÏÂÃæµÄÁ½¸ö²éѯ±»²éѯ»º´æÈÏΪÊDz»ÏàͬµÄ£º
SELECT * FROM tbl_name
Select * from tbl_name
²éѯ±ØÐëÊÇÍêÈ«ÏàͬµÄ(Öð×Ö½ÚÏàͬ)²ÅÄܹ»±»ÈÏΪÊÇÏàͬµÄ¡£

2.3.  ²»»º´æµÄÓï¾ä

Èç¹ûÒ»¸ö²éѯ°üº¬ÏÂÃæº¯ÊýÖеÄÈκÎÒ»¸ö£¬Ëü²»»á±»»º´æ£º
BENCHMARK()
CONNECTION_ID()
CURDATE()
CURRENT_DATE()
CURRENT_TIME()
CURRENT_TIMESTAMP()
CURTIME()
DATABASE()
´øÒ»¸ö²ÎÊýµÄENCRYPT()
FOUND_ROWS()
GET_LOCK()
LAST_INSERT_ID()
LOAD_FILE()
MASTER_POS_WAIT()
NOW()
RAND()
RELEASE_LOCK()
SYSDATE()
²»´ø²ÎÊýµÄUNIX_TIMESTAMP()
USER()

3.   EXPLAINÖ´Ðмƻ®

3.1.  ¼ò½é

ʹÓà EXPLAIN ¹Ø¼ü×Ö¿ÉÒÔÈÃÄãÖªµÀMySQLÊÇÈçºÎ´¦ÀíÄãµÄSQLÓï¾äµÄ¡£Õâ¿ÉÒÔ°ïÄã·ÖÎöÄãµÄ²éѯÓï¾ä»òÊDZí½á¹¹µÄÐÔÄÜÆ¿¾±¡£
EXPLAIN µÄ²éѯ½á¹û»¹»á¸æËßÄãÄãµÄË÷ÒýÖ÷¼ü±»ÈçºÎÀûÓõÄ£¬ÄãµÄÊý¾Ý±íÊÇÈçºÎ±»ËÑË÷ºÍÅÅÐòµÄ……µÈµÈ£¬µÈµÈ¡£
ÌôÒ»¸öÄãµÄSELECTÓï¾ä£¨ÍƼöÌôÑ¡ÄǸö×Ôӵģ¬Óжà±íÁª½ÓµÄ£©£¬°Ñ¹Ø¼ü×ÖEXPLAIN¼Óµ½Ç°Ãæ¡£
EXPLAIN
SELECT * FROM userinfo u  INNER JOIN jobinfo j  ON u.jobinfoId=j.id;
²é¿´Ö´Ðмƻ®£º

 
²ÎÊý½âÊÍ£º
id£º²éѯµÄÐòºÅ
select_type:selectÀàÐÍ£¬simple±íʾ¼òµ¥µÄ²éѯ
table£ºÒýÓõıí
type£ºÁ´½ÓÀàÐÍ£¬all±íʾȫ±íɨÃ裬ûÓÐʹÓÃË÷Òý¡£
possible_keys£º²éѯʱ¿ÉÒÔʹÓõÄË÷Òý
key£º²éѯʱÕýÔÚʹÓõÄË÷Òý
key_len£ºË÷ÒýµÄ³¤¶È
rows£º²éѯµÄÐÐÊý£¬³Ë»ý¼´ÎªµÑ¿¨¶û»ý
Extra£º¸ÃÁаüº¬MySQL½â¾ö²éѯµÄÏêϸÐÅÏ¢¡£
 

3.1.1.   ²ÎÊýÏê½â

id£ºÕâÊÇSELECTµÄ²éѯÐòÁкÅ¡£
select_type£ºSELECTÀàÐÍ£¬¿ÉÒÔΪÒÔÏÂÈκÎÒ»ÖÖ£º
SIMPLE£º¼òµ¥SELECT(²»Ê¹ÓÃUNION»ò×Ó²éѯ)
PRIMARY£º×îÍâÃæµÄSELECT
UNION£ºUNIONÖеĵڶþ¸ö»òºóÃæµÄSELECTÓï¾ä
DEPENDENT UNION£ºUNIONÖеĵڶþ¸ö»òºóÃæµÄSELECTÓï¾ä£¬È¡¾öÓÚÍâÃæµÄ²éѯ
UNION RESULT£ºUNIONµÄ½á¹û¡£
SUBQUERY:×Ó²éѯÖеĵÚÒ»¸öSELECT
DEPENDENT SUBQUERY:×Ó²éѯÖеĵÚÒ»¸öSELECT£¬È¡¾öÓÚÍâÃæµÄ²éѯ
DERIVED:µ¼³ö±íµÄSELECT(FROM×Ó¾äµÄ×Ó²éѯ)
table:Êä³öµÄÐÐËùÒýÓõıí¡£
type:Áª½ÓÀàÐÍ¡£ÏÂÃæ¸ø³ö¸÷ÖÖÁª½ÓÀàÐÍ£¬°´ÕÕ´Ó×î¼ÑÀàÐ͵½×ÀàÐͽøÐÐÅÅÐò£º
system±í½öÓÐÒ»ÐÐ(=ϵͳ±í)¡£
const±í×î¶àÓÐÒ»¸öÆ¥ÅäÐУ¬Ëü½«ÔÚ²éѯ¿ªÊ¼Ê±±»¶ÁÈ¡¡£
eq_ref±È½ÏµÄʱºò£¬“=”ǰºóµÄ±äÁ¿¶¼¼ÓÁËË÷Òý¡£
ref:Ç°ÃæµÄ±í¼ÓÁËË÷Òý¡£
index£º¸ÃÁª½ÓÀàÐÍÓëALLÏàͬ£¬Ö»ÊÇË÷ÒýÊ÷±»É¨Ãè¡£
ALL£ºÈ«±íɨÃè¡£
possible_keys£ºpossible_keysÁÐÖ¸³öMySQLÄÜʹÓÃÄĸöË÷ÒýÔڸñíÖÐÕÒµ½ÐС£
Èç¹û¸ÃÁÐÊÇNULL£¬ÔòûÓÐÏà¹ØµÄË÷Òý¡£ÔÚÕâÖÖÇé¿öÏ£¬¿ÉÒÔͨ¹ý¼ì²éWHERE×Ӿ俴ÊÇ·ñËüÒýÓÃijЩÁлòÊʺÏË÷ÒýµÄÁÐÀ´Ìá¸ßÄãµÄ²éѯÐÔÄÜ¡£
key:ÏÔʾMySQLʵ¼Ê¾ö¶¨Ê¹ÓõÄË÷Òý¡£Èç¹ûûÓÐÑ¡ÔñË÷Òý£¬¼üÊÇNULL¡£
key_len:ÏÔʾMySQL¾ö¶¨Ê¹ÓõÄË÷Òý³¤¶È¡£Èç¹ûË÷ÒýÊÇNULL£¬Ôò³¤¶ÈΪNULL¡£
ref£ºÏÔʾʹÓÃÄĸöÁлò³£ÊýÓëkeyÒ»Æð´Ó±íÖÐÑ¡ÔñÐС£
rows£ºÏÔʾMySQLÈÏΪËüÖ´Ðвéѯʱ±ØÐë¼ì²éµÄÐÐÊý¡£
Extra£º¸ÃÁаüº¬MySQL½â¾ö²éѯµÄÏêϸÐÅÏ¢¡£ÏÂÃæ½âÊÍÁ˸ÃÁпÉÒÔÏÔʾµÄ²»Í¬µÄÎı¾×Ö·û´®£º
Distinct£ºMySQL·¢ÏÖµÚ1¸öÆ¥ÅäÐкó£¬Í£Ö¹Îªµ±Ç°µÄÐÐ×éºÏËÑË÷¸ü¶àµÄÐС£
Not exists£ºMySQLÄܹ»¶Ô²éѯ½øÐÐLEFT JOINÓÅ»¯£¬·¢ÏÖ1¸öÆ¥ÅäLEFT JOIN±ê×¼µÄÐк󣬲»ÔÙÎªÇ°ÃæµÄµÄÐÐ×éºÏÔڸñíÄÚ¼ì²é¸ü¶àµÄÐС£
range checked for each record (index map: #)£ºMySQLûÓз¢ÏֺõĿÉÒÔʹÓõÄË÷Òý£¬µ«·¢ÏÖÈç¹ûÀ´×ÔÇ°ÃæµÄ±íµÄÁÐÖµÒÑÖª£¬¿ÉÄܲ¿·ÖË÷Òý¿ÉÒÔʹÓ᣶ÔÇ°ÃæµÄ±íµÄÿ¸öÐÐ×éºÏ£¬MySQL¼ì²éÊÇ·ñ¿ÉÒÔʹÓÃrange»òindex_merge·ÃÎÊ·½·¨À´Ë÷È¡ÐС£
Using filesort£ºMySQLÐèÒª¶îÍâµÄÒ»´Î´«µÝ£¬ÒÔÕÒ³öÈçºÎ°´ÅÅÐò˳Ðò¼ìË÷ÐС£Í¨¹ý¸ù¾ÝÁª½ÓÀàÐÍä¯ÀÀËùÓÐÐв¢ÎªËùÓÐÆ¥ÅäWHERE×Ó¾äµÄÐб£´æÅÅÐò¹Ø¼ü×ÖºÍÐеÄÖ¸ÕëÀ´Íê³ÉÅÅÐò¡£È»ºó¹Ø¼ü×Ö±»ÅÅÐò£¬²¢°´ÅÅÐò˳Ðò¼ìË÷ÐÐ
Using index£º´ÓֻʹÓÃË÷ÒýÊ÷ÖеÄÐÅÏ¢¶ø²»ÐèÒª½øÒ»²½ËÑË÷¶Áȡʵ¼ÊµÄÐÐÀ´¼ìË÷±íÖеÄÁÐÐÅÏ¢¡£µ±²éѯֻʹÓÃ×÷Ϊµ¥Ò»Ë÷ÒýÒ»²¿·ÖµÄÁÐʱ£¬¿ÉÒÔʹÓøòßÂÔ¡£
Using temporary£ºÎªÁ˽â¾ö²éѯ£¬MySQLÐèÒª´´½¨Ò»¸öÁÙʱ±íÀ´ÈÝÄɽá¹û¡£µäÐÍÇé¿öÈç²éѯ°üº¬¿ÉÒÔ°´²»Í¬Çé¿öÁгöÁеÄGROUP BYºÍORDER BY×Ó¾äʱ¡£
Using where£ºWHERE×Ó¾äÓÃÓÚÏÞÖÆÄÄÒ»¸öÐÐÆ¥ÅäÏÂÒ»¸ö±í»ò·¢Ë͵½¿Í»§¡£³ý·ÇÄãרÃÅ´Ó±íÖÐË÷È¡»ò¼ì²éËùÓÐÐУ¬Èç¹ûExtraÖµ²»ÎªUsing where²¢ÇÒ±íÁª½ÓÀàÐÍΪALL»òindex£¬²éѯ¿ÉÄÜ»áÓÐһЩ´íÎó¡£
Using sort_union(...), Using union(...), Using intersect(...)£ºÕâЩº¯Êý˵Ã÷ÈçºÎΪindex_mergeÁª½ÓÀàÐͺϲ¢Ë÷ÒýɨÃè¡£

3.2.  ÓÅ»¯·½°¸

3.2.1.   ²é¿´Æ¥ÅäµÄÁÐÀàÐͺͳ¤¶ÈÊÇ·ñÏàͬ

²é¿´Á½ÕűíÁ´½ÓµÄÁеÄÀàÐͺͳ¤¶ÈÊÇ·ñÏàͬ£¬²»Í¬¸ÄΪÏàͬ
ALTER TABLE ±íÃû MODIFY ÁÐÃû BIGINT(20);

3.3.  ΪÏà¹ØÁªµÄÁÐÉèÖÃË÷Òý

²é¿´Ë÷Òý£º
SHOW INDEX FROM tbl_name;
´´½¨Ë÷Òý£º
ALTER TABLE ±íÃû ADD INDEX Ë÷ÒýÃû (Ë÷ÒýÁÐ) ;
ɾ³ýË÷Òý£º
drop index Ë÷ÒýÃû on ±íÃû;
ÏÔʾʹÓÃË÷Òý£º
USE INDEX
ÔÚÄã²éѯÓï¾äÖбíÃûµÄºóÃæ£¬Ìí¼Ó USE INDEX À´ÌṩÄãÏ£Íû MySQ È¥²Î¿¼µÄË÷ÒýÁÐ
±í£¬¾Í¿ÉÒÔÈà MySQL ²»ÔÙ¿¼ÂÇÆäËû¿ÉÓõÄË÷Òý¡£
Eg:SELECT * FROM mytable USE INDEX (mod_time, name) ...
IGNORE INDEX
Èç¹ûÄãÖ»Êǵ¥´¿µÄÏëÈà MySQL ºöÂÔÒ»¸ö»òÕß¶à¸öË÷Òý£¬¿ÉÒÔʹÓà IGNORE INDEX ×÷
Ϊ Hint¡£
Eg:SELECT * FROM mytale IGNORE INDEX (priority) ...
FORCE INDEX
ÎªÇ¿ÖÆ MySQL ʹÓÃÒ»¸öÌØ¶¨µÄË÷Òý£¬¿ÉÔÚ²éѯÖÐʹÓà FORCE INDEX ×÷Ϊ Hint¡£
Eg:SELECT * FROM mytable FORCE INDEX (mod_time) ...
 

3.4.  ²»Ê¹ÓÃË÷ÒýµÄÇé¿ö

ÏÂÁÐÇé¿öÏ£¬Mysql ²»»áʹÓÃÒÑÓеÄË÷Òý£º
1.Èç¹û mysql ¹À¼ÆÊ¹ÓÃË÷Òý±ÈÈ«±íɨÃè¸üÂý£¬Ôò²»Ê¹ÓÃË÷Òý¡£ÀýÈ磺Èç¹û key_part1
¾ùÔÈ·Ö²¼ÔÚ 1 ºÍ 100 Ö®¼ä£¬ÏÂÁвéѯÖÐʹÓÃË÷Òý¾Í²»ÊǺܺãº
SELECT * FROM table_name where key_part1 > 1 and key_part1 < 90
2.Èç¹ûʹÓÃÄÚ´æ±í²¢ÇÒ where Ìõ¼þÖв»Óã½Ë÷ÒýÁУ¬ÆäËû> ¡¢<¡¢ >=¡¢ <=¾ù²»Ê¹ÓÃ
Ë÷Òý£»
3.Èç¹û like ÊÇÒÔ£¥¿ªÊ¼£»
4.¶Ô where ºó±ßÌõ¼þΪ×Ö·û´®µÄÒ»¶¨Òª¼ÓÒýºÅ£¬×Ö·û´®Èç¹ûΪÊý×Ö mysql »á×Ô¶¯×ªÎª
×Ö·û´®£¬µ«ÊDz»Ê¹ÓÃË÷Òý¡£

3.5.  ²é¿´Ë÷ÒýʹÓÃÇé¿ö

Óï·¨£º
mysql> show status like 'Handler_read%';
Èç¹ûË÷ÒýÕýÔÚ¹¤×÷£¬Handler_read_key µÄÖµ½«ºÜ¸ß£¬Õâ¸öÖµ´ú±íÁËÒ»¸öÐб»Ë÷ÒýÖµ¶ÁµÄ´ÎÊý£¬ ºÜµÍµÄÖµ±íÃ÷Ôö¼ÓË÷ÒýµÃµ½µÄÐÔÄܸÄÉÆ²»¸ß£¬ ÒòΪË÷Òý²¢²»¾­³£Ê¹Óà ¡£
Handler_read_rnd_next µÄÖµ¸ßÔòÒâζ×ŲéѯÔËÐеÍЧ£¬²¢ÇÒÓ¦¸Ã½¨Á¢Ë÷Òý²¹¾È¡£Õâ¸öÖµµÄº¬ÒåÊÇÔÚÊý¾ÝÎļþÖжÁÏÂÒ»ÐеÄÇëÇóÊý¡£Èç¹ûÄãÕý½øÐдóÁ¿µÄ±íɨÃ裬
¸ÃÖµ½Ï¸ß¡£Í¨³£ËµÃ÷±íË÷Òý²»ÕýÈ·»òдÈëµÄ²éѯûÓÐÀûÓÃË÷Òý¡£

4.   ÆäËûÓÅ»¯

4.1.  µ±Ö»ÒªÒ»ÐÐÊý¾ÝʱʹÓà LIMIT 1

µ±Äã²éѯ±íµÄÓÐЩʱºò£¬ÄãÒѾ­ÖªµÀ½á¹ûÖ»»áÓÐÒ»Ìõ½á¹û£¬µ«ÒòΪÄãÒ²Ðí»áÈ¥¼ì²é·µ»ØµÄ¼Ç¼Êý¡£ÔÚÕâÖÖÇé¿öÏ£¬¼ÓÉÏ LIMIT 1 ¿ÉÒÔÔö¼ÓÐÔÄÜ¡£ÕâÑùÒ»À´£¬MySQLÊý¾Ý¿âÒýÇæ»áÔÚÕÒµ½Ò»ÌõÊý¾ÝºóÍ£Ö¹ËÑË÷£¬¶ø²»ÊǼÌÐøÍùºó²éÉÙÏÂÒ»Ìõ·ûºÏ¼Ç¼µÄÊý¾Ý¡£
ÀýÈ磺
Èç¹ûÄãÏëÔڵǽʱÑéÖ¤Óû§ÃûÃÜÂëÊÇ·ñ´æÔÚ£¬Äã¿ÉÒÔÕâÑùд
SELECT 1 FROM jobinfo WHERE NAME ='zhangsan' AND PASSWORD = '1234' LIMIT 1;
¶ø²»ÊÇ
SELECT * FROM jobinfo WHERE NAME ='zhangsan' AND PASSWORD = '1234';

4.2.  ΪËÑË÷×ֶν¨Ë÷Òý

Ë÷Òý²¢²»Ò»¶¨¾ÍÊǸøÖ÷¼ü»òÊÇΨһµÄ×ֶΡ£Èç¹ûÔÚÄãµÄ±íÖУ¬ÓÐij¸ö×Ö¶ÎÄã×ÜÒª»á¾­³£ÓÃÀ´×öËÑË÷£¬ÄÇô£¬ÇëΪÆä½¨Á¢Ë÷Òý°É¡£

4.3.  ±ÜÃâ SELECT *

´ÓÊý¾Ý¿âÀï¶Á³öÔ½¶àµÄÊý¾Ý£¬ÄÇô²éѯ¾Í»á±äµÃÔ½Âý¡£²¢ÇÒ£¬Èç¹ûÄãµÄÊý¾Ý¿â·þÎñÆ÷ºÍWEB·þÎñÆ÷ÊÇÁ½Ì¨¶ÀÁ¢µÄ·þÎñÆ÷µÄ»°£¬Õ⻹»áÔö¼ÓÍøÂç´«ÊäµÄ¸ºÔØ¡£

4.4.  ÓÀԶΪÿÕűíÉèÖÃÒ»¸öID

ÎÒÃÇÓ¦¸ÃΪÊý¾Ý¿âÀïµÄÿÕÅ±í¶¼ÉèÖÃÒ»¸öID×öΪÆäÖ÷¼ü£¬¶øÇÒ×îºÃµÄÊÇÒ»¸öINTÐ͵Ä£¬²¢ÉèÖÃÉÏ×Ô¶¯Ôö¼ÓµÄAUTO_INCREMENT±êÖ¾¡£
¾ÍËãÊÇÄã users ±íÓÐÒ»¸öÖ÷¼ü½Ð “email”µÄ×ֶΣ¬ÄãÒ²±ðÈÃËü³ÉΪÖ÷¼ü¡£Ê¹Óà VARCHAR ÀàÐÍÀ´µ±Ö÷¼ü»áʹÓõÃÐÔÄÜϽµ¡£ÁíÍ⣬ÔÚÄãµÄ³ÌÐòÖУ¬ÄãÓ¦¸ÃʹÓñíµÄIDÀ´¹¹ÔìÄãµÄÊý¾Ý½á¹¹¡£
¶øÇÒ£¬ÔÚMySQLÊý¾ÝÒýÇæÏ£¬»¹ÓÐһЩ²Ù×÷ÐèҪʹÓÃÖ÷¼ü£¬ÔÚÕâЩÇé¿öÏ£¬Ö÷¼üµÄÐÔÄܺÍÉèÖñäµÃ·Ç³£ÖØÒª£¬±ÈÈ磬¼¯Èº£¬·ÖÇø……

4.5.  ¾¡¿ÉÄܵÄʹÓà NOT NULL

³ý·ÇÄãÓÐÒ»¸öºÜÌØ±ðµÄÔ­ÒòȥʹÓà NULL Öµ£¬ÄãÓ¦¸Ã×ÜÊÇÈÃÄãµÄ×ֶα£³Ö NOT NULL¡£
Ê×ÏÈ£¬ÎÊÎÊÄã×Ô¼º“Empty”ºÍ“NULL”Óжà´óµÄÇø±ð£¨Èç¹ûÊÇINT£¬ÄǾÍÊÇ0ºÍNULL£©£¿Èç¹ûÄã¾õµÃËüÃÇÖ®¼äûÓÐÊ²Ã´Çø±ð£¬ÄÇôÄã¾Í²»ÒªÊ¹ÓÃNULL¡£
 
²»ÒªÒÔΪ NULL ²»ÐèÒª¿Õ¼ä£¬ÆäÐèÒª¶îÍâµÄ¿Õ¼ä£¬²¢ÇÒ£¬ÔÚÄã½øÐбȽϵÄʱºò£¬ÄãµÄ³ÌÐò»á¸ü¸´ÔÓ¡£

4.6.  Prepared Statements

Prepared StatementsºÜÏñ´æ´¢¹ý³Ì£¬ÊÇÒ»ÖÖÔËÐÐÔÚºǫ́µÄSQLÓï¾ä¼¯ºÏ£¬ÎÒÃÇ¿ÉÒÔ´ÓʹÓà prepared statements »ñµÃºÜ¶àºÃ´¦£¬ÎÞÂÛÊÇÐÔÄÜÎÊÌ⻹Êǰ²È«ÎÊÌâ¡£
Prepared Statements ¿ÉÒÔ¼ì²éһЩÄã°ó¶¨ºÃµÄ±äÁ¿£¬ÕâÑù¿ÉÒÔ±£»¤ÄãµÄ³ÌÐò²»»áÊܵ½“SQL×¢Èëʽ”¹¥»÷¡£µ±È»£¬ÄãÒ²¿ÉÒÔÊÖ¶¯µØ¼ì²éÄãµÄÕâЩ±äÁ¿£¬È»¶ø£¬ÊÖ¶¯µÄ¼ì²éÈÝÒ׳öÎÊÌ⣬ ¶øÇҺܾ­³£»á±»³ÌÐòÔ±ÍüÁË¡£
ÔÚÐÔÄÜ·½Ã棬µ±Ò»¸öÏàͬµÄ²éѯ±»Ê¹Óöà´ÎµÄʱºò£¬Õâ»áΪÄã´øÀ´¿É¹ÛµÄÐÔÄÜÓÅÊÆ¡£Äã¿ÉÒÔ¸øÕâЩPrepared Statements¶¨ÒåһЩ²ÎÊý£¬¶øMySQLÖ»»á½âÎöÒ»´Î¡£

4.7.  °ÑIPµØÖ·´æ³É INT

ºÜ¶à³ÌÐòÔ±¶¼»á´´½¨Ò»¸ö VARCHAR(15) ×Ö¶ÎÀ´´æ·Å×Ö·û´®ÐÎʽµÄIP¶ø²»ÊÇÕûÐεÄIP¡£Èç¹ûÄãÓÃÕûÐÎÀ´´æ·Å£¬Ö»ÐèÒª4¸ö×Ö½Ú£¬²¢ÇÒÄã¿ÉÒÔÓж¨³¤µÄ×ֶΡ£¶øÇÒ£¬Õâ»áΪÄã´øÀ´²éѯÉϵÄÓÅÊÆ£¬ÓÈÆäÊǵ± ÄãÐèҪʹÓÃÕâÑùµÄWHEREÌõ¼þ£ºIP between ip1 and ip2¡£
ÎÒÃDZØÐèҪʹÓÃNT£¬ÒòΪ IPµØÖ·»áʹÓÃÕû¸ö32λµÄÎÞ·ûºÅÕûÐΡ£
¶øÄãµÄ²éѯ£¬Äã¿ÉÒÔʹÓà INET_ATON() À´°ÑÒ»¸ö×Ö·û´®IPת³ÉÒ»¸öÕûÐΣ¬²¢Ê¹Óà INET_NTOA() °ÑÒ»¸öÕûÐÎת³ÉÒ»¸ö×Ö·û´®IP¡£
SELECT INET_ATON('192.168.0.1') FROM jobinfo;
SELECT INET_NTOA(3232235521) FROM jobinfo;

4.8.  ¹Ì¶¨³¤¶ÈµÄ±í»á¸ü¿ì

Èç¹û±íÖеÄËùÓÐ×ֶζ¼ÊÇ“¹Ì¶¨³¤¶È”µÄ£¬Õû¸ö±í»á±»ÈÏΪÊÇ “static” »ò “fixed-length”¡£ ÀýÈ磬±íÖÐûÓÐÈçÏÂÀàÐ͵Ä×ֶΣº VARCHAR£¬TEXT£¬BLOB¡£
Ö»ÒªÄã°üÀ¨ÁËÆäÖÐÒ»¸öÕâЩ×ֶΣ¬ÄÇôÕâ¸ö±í¾Í²»ÊÇ“¹Ì¶¨³¤¶È¾²Ì¬±í”ÁË£¬ÕâÑù£¬MySQL ÒýÇæ»áÓÃÁíÒ»ÖÖ·½·¨À´´¦Àí¡£
¹Ì¶¨³¤¶ÈµÄ±í»áÌá¸ßÐÔÄÜ£¬ÒòΪMySQLËÑѰµÃ»á¸ü¿ìһЩ£¬ÒòΪÕâЩ¹Ì¶¨µÄ³¤¶ÈÊǺÜÈÝÒ×¼ÆËãÏÂÒ»¸öÊý¾ÝµÄÆ«ÒÆÁ¿µÄ£¬ËùÒÔ¶ÁÈ¡µÄ×ÔȻҲ»áºÜ¿ì¡£¶øÈç¹û×ֶβ»ÊǶ¨³¤µÄ£¬ÄÇô£¬Ã¿Ò»´ÎÒªÕÒÏÂÒ»ÌõµÄ»°£¬ÐèÒª³ÌÐòÕÒµ½Ö÷¼ü¡£
²¢ÇÒ£¬¹Ì¶¨³¤¶ÈµÄ±íÒ²¸üÈÝÒ×±»»º´æºÍÖØ½¨¡£²»¹ý£¬Î¨Ò»µÄ¸±×÷ÓÃÊÇ£¬¹Ì¶¨³¤¶ÈµÄ×ֶλáÀË·ÑһЩ¿Õ¼ä£¬ÒòΪ¶¨³¤µÄ×Ö¶ÎÎÞÂÛÄãÓò»Óã¬Ëû¶¼ÊÇÒª·ÖÅäÄÇô¶àµÄ¿Õ¼ä¡£

4.9.  ´¹Ö±·Ö¸î

“´¹Ö±·Ö¸î”ÊÇÒ»ÖÖ°ÑÊý¾Ý¿âÖÐµÄ±í°´Áбä³É¼¸ÕűíµÄ·½·¨£¬ÕâÑù¿ÉÒÔ½µµÍ±íµÄ¸´ÔӶȺÍ×ֶεÄÊýÄ¿£¬´Ó¶ø´ïµ½ÓÅ»¯µÄÄ¿µÄ¡£
ʾÀýÒ»£ºÔÚUsers±íÖÐÓÐÒ»¸ö×Ö¶ÎÊǼÒÍ¥µØÖ·£¬Õâ¸ö×Ö¶ÎÊÇ¿ÉÑ¡×ֶΣ¬Ïà±ÈÆð£¬¶øÇÒÄãÔÚÊý¾Ý¿â²Ù×÷µÄʱºò³ýÁ˸ö ÈËÐÅÏ¢Í⣬Äã²¢²»ÐèÒª¾­³£¶ÁÈ¡»òÊǸÄдÕâ¸ö×ֶΡ£ÄÇô£¬ÎªÊ²Ã´²»°ÑËû·Åµ½ÁíÍâÒ»ÕűíÖÐÄØ£¿ ÕâÑù»áÈÃÄãµÄ±íÓиüºÃµÄÐÔÄÜ£¬´ó¶àµÄʱºò£¬ÎÒ¶ÔÓÚÓû§±íÀ´Ëµ£¬Ö»ÓÐÓû§ID£¬Óû§Ãû£¬¿ÚÁÓû§½ÇÉ«µÈ»á±»¾­³£Ê¹Óá£Ð¡Ò»µãµÄ±í×ÜÊÇ»áÓкõÄÐÔÄÜ¡£
ʾÀý¶þ£º ÄãÓÐÒ»¸ö½Ð “last_login” µÄ×ֶΣ¬Ëü»áÔÚÿ´ÎÓû§µÇ¼ʱ±»¸üС£µ«ÊÇ£¬Ã¿´Î¸üÐÂʱ»áµ¼Ö¸ñíµÄ²éѯ»º´æ±»Çå¿Õ¡£ËùÒÔ£¬Äã¿ÉÒÔ°ÑÕâ¸ö×ֶηŵ½ÁíÒ»¸ö±íÖУ¬ÕâÑù¾Í²»»áÓ°ÏìÄã¶ÔÓû§ID£¬Óû§Ãû£¬Óû§½ÇÉ«µÄ²»Í£µØ¶ÁÈ¡ÁË£¬ÒòΪ²éѯ»º´æ»á°ïÄãÔö¼ÓºÜ¶àÐÔÄÜ¡£
ÁíÍ⣬ÄãÐèҪעÒâµÄÊÇ£¬ÕâЩ±»·Ö³öÈ¥µÄ×Ö¶ÎËùÐγɵıí£¬Äã²»»á¾­³£ÐÔµØÈ¥JoinËûÃÇ£¬²»È»µÄ»°£¬ÕâÑùµÄÐÔÄÜ»á±È²»·Ö¸îʱ»¹Òª²î£¬¶øÇÒ£¬»áÊǼ«Êý¼¶µÄϽµ¡£

4.10.     ²ð·Ö´óµÄ DELETE »ò INSERT Óï¾ä

         Èç¹ûÄãÐèÒªÔÚÒ»¸öÔÚÏßµÄÍøÕ¾ÉÏÈ¥Ö´ÐÐÒ»¸ö´óµÄ DELETE »ò INSERT ²éѯ£¬ÄãÐèÒª·Ç³£Ð¡ÐÄ£¬Òª±ÜÃâÄãµÄ²Ù×÷ÈÃÄãµÄÕû¸öÍøÕ¾Í£Ö¹ÏìÓ¦¡£ÒòΪÕâÁ½¸ö²Ù×÷ÊÇ»áËø±íµÄ£¬±íÒ»Ëø×¡ÁË£¬±ðµÄ²Ù×÷¶¼½ø²»À´ÁË¡£
         Apache »áÓкܶàµÄ×Ó½ø³Ì»òÏ̡߳£ËùÒÔ£¬Æä¹¤×÷ÆðÀ´Ï൱ÓÐЧÂÊ£¬¶øÎÒÃǵķþÎñÆ÷Ò²²»Ï£ÍûÓÐÌ«¶àµÄ×Ó½ø³Ì£¬Ï̺߳ÍÊý¾Ý¿âÁ´½Ó£¬ÕâÊǼ«´óµÄÕ¼·þÎñÆ÷×ÊÔ´µÄÊÂÇ飬ÓÈÆäÊÇÄÚ´æ¡£
         Èç¹ûÄã°ÑÄãµÄ±íËøÉÏÒ»¶Îʱ¼ä£¬±ÈÈç30ÃëÖÓ£¬ÄÇô¶ÔÓÚÒ»¸öÓкܸ߷ÃÎÊÁ¿µÄÕ¾µãÀ´Ëµ£¬Õâ30ÃëËù»ýÀ۵ķÃÎʽø³Ì/Ị̈߳¬Êý¾Ý¿âÁ´½Ó£¬´ò¿ªµÄÎļþÊý£¬¿ÉÄܲ»½ö½ö»áÈÃÄãµ¼ÖÂWEB·þÎñCrash£¬»¹¿ÉÄÜ»áÈÃÄãµÄÕų̂·þÎñÆ÷ÂíÉϹÒÁË¡£
 
ËùÒÔ£¬Èç¹ûÄãÓÐÒ»¸ö´óµÄ´¦Àí£¬Ä㶨ÄãÒ»¶¨°ÑÆä²ð·Ö£¬Ê¹Óà LIMIT Ìõ¼þÊÇÒ»¸öºÃµÄ·½·¨¡£ÏÂÃæÊÇÒ»¸öʾÀý£º
 
while (1) {
    //ÿ´ÎÖ»×ö1000Ìõ
"DELETE FROM logs WHERE log_date <= '2009-11-01' LIMIT 1000";
    if (select 1 FROM logs WHERE log_date <= '2009-11-01' LIMIT 1==0) {
        // ûµÃ¿ÉɾÁË£¬Í˳ö£¡
        break;
    }
    // ÿ´Î¶¼ÒªÐÝÏ¢Ò»»á¶ù
    usleep(50000);
}

4.11.     Ñ¡ÔñÕýÈ·µÄ´æ´¢ÒýÇæ

ÔÚ MySQL ÖÐÓжà¸ö´æ´¢ÒýÇæ MyISAM ºÍ InnoDBµÈ£¬Ã¿¸öÒýÇæ¶¼ÓÐÀûÓбס£
MyISAM ÊʺÏÓÚһЩÐèÒª´óÁ¿²éѯµÄÓ¦Ó㬵«Æä¶ÔÓÚÓдóÁ¿Ð´²Ù×÷²¢²»ÊǺܺá£ÉõÖÁÄãÖ»ÊÇÐèÒªupdateÒ»¸ö×ֶΣ¬Õû¸ö±í¶¼»á±»ËøÆðÀ´£¬¶ø±ðµÄ½ø³Ì£¬¾ÍËãÊǶÁ½ø³Ì¶¼ ÎÞ·¨²Ù×÷Ö±µ½¶Á²Ù×÷Íê³É¡£ÁíÍ⣬MyISAM ¶ÔÓÚ SELECT COUNT(*) ÕâÀàµÄ¼ÆËãÊdz¬¿ìÎޱȵÄ¡£
InnoDB µÄÇ÷ÊÆ»áÊÇÒ»¸ö·Ç³£¸´ÔӵĴ洢ÒýÇæ£¬¶ÔÓÚһЩСµÄÓ¦Óã¬Ëü»á±È MyISAM »¹Âý¡£ËûÊÇËüÖ§³Ö“ÐÐËø” £¬ÓÚÊÇÔÚд²Ù×÷±È½Ï¶àµÄʱºò£¬»á¸üÓÅÐã¡£²¢ÇÒ£¬Ëû»¹Ö§³Ö¸ü¶àµÄ¸ß¼¶Ó¦Ó㬱ÈÈ磺ÊÂÎñ¡£

4.12.     ԽСµÄÁлáÔ½¿ì

¶ÔÓÚ´ó¶àÊýµÄÊý¾Ý¿âÒýÇæÀ´Ëµ£¬Ó²Å̲Ù×÷¿ÉÄÜÊÇ×îÖØ´óµÄÆ¿¾±¡£ËùÒÔ£¬°ÑÄãµÄÊý¾Ý±äµÃ½ô´Õ»á¶ÔÕâÖÖÇé¿ö·Ç³£ÓаïÖú£¬ÒòΪÕâ¼õÉÙÁ˶ÔÓ²Å̵ķÃÎÊ¡£
Èç¹ûÒ»¸ö±íÖ»»áÓм¸ÁаÕÁË£¨±ÈÈç˵×Öµä±í£¬ÅäÖÃ±í£©£¬ÄÇô£¬ÎÒÃǾÍûÓÐÀíÓÉʹÓà INT À´×öÖ÷¼ü£¬Ê¹Óà SMALLINT »òÊǸüСµÄ TINYINT »á¸ü¾­¼ÃһЩ¡£

4.13.     ʹÓà ENUM ¶ø²»ÊÇ VARCHAR

ENUM ÀàÐÍÊǷdz£¿ìºÍ½ô´ÕµÄ¡£ÔÚʵ¼ÊÉÏ£¬Æä±£´æµÄÊÇ TINYINT£¬µ«ÆäÍâ±íÉÏÏÔʾΪ×Ö·û´®¡£ÕâÑùÒ»À´£¬ÓÃÕâ¸ö×Ö¶ÎÀ´×öһЩѡÏîÁбí±äµÃÏ൱µÄÍêÃÀ¡£
Èç¹ûÄãÓÐÒ»¸ö×ֶΣ¬±ÈÈç“ÐԱ𔣬“¹ú¼Ò”£¬“Ãñ×唣¬“״̬”»ò“²¿ÃÅ”£¬ÄãÖªµÀÕâЩ×ֶεÄȡֵÊÇÓÐÏÞ¶øÇҹ̶¨µÄ£¬ÄÇô£¬ÄãÓ¦¸ÃʹÓà ENUM ¶ø²»ÊÇ VARCHAR¡£
MySQLÒ²ÓÐÒ»¸ö“½¨Ò锸æËßÄãÔõÃ´È¥ÖØÐÂ×éÖ¯ÄãµÄ±í½á¹¹¡£µ±ÄãÓÐÒ»¸ö VARCHAR ×Ö¶Îʱ£¬Õâ¸ö½¨Òé»á¸æËßÄã°ÑÆä¸Ä³É ENUM ÀàÐÍ¡£Ê¹Óà PROCEDURE ANALYSE() Äã¿ÉÒԵõ½Ïà¹ØµÄ½¨Òé¡£

4.14.     ´Ó PROCEDURE ANALYSE() È¡µÃ½¨Òé

Óï·¨£ºSELECT * FROM student LIMIT 1,1 PROCEDURE ANALYSE(1);
PROCEDURE ANALYSE() »áÈà MySQL °ïÄãÈ¥·ÖÎöÄãµÄ×Ö¶ÎºÍÆäʵ¼ÊµÄÊý¾Ý£¬²¢»á¸øÄãһЩÓÐÓõĽ¨Òé¡£Ö»ÓбíÖÐÓÐʵ¼ÊµÄÊý¾Ý£¬ÕâЩ½¨Òé²Å»á±äµÃÓÐÓã¬ÒòΪҪ×öһЩ´óµÄ¾ö¶¨ÊÇÐèÒªÓÐÊý¾Ý×÷Ϊ»ù´¡µÄ¡£
ÀýÈ磬Èç¹ûÄã´´½¨ÁËÒ»¸ö INT ×Ö¶Î×÷ΪÄãµÄÖ÷¼ü£¬È»¶ø²¢Ã»ÓÐÌ«¶àµÄÊý¾Ý£¬ÄÇô£¬PROCEDURE ANALYSE()»á½¨ÒéÄã°ÑÕâ¸ö×ֶεÄÀàÐÍ¸Ä³É MEDIUMINT ¡£»òÊÇÄãʹÓÃÁËÒ»¸ö VARCHAR ×ֶΣ¬ÒòΪÊý¾Ý²»¶à£¬Äã¿ÉÄÜ»áµÃµ½Ò»¸öÈÃÄã°ÑËü¸Ä³É ENUM µÄ½¨Òé¡£ÕâЩ½¨Ò飬¶¼ÊÇ¿ÉÄÜÒòΪÊý¾Ý²»¹»¶à£¬ËùÒÔ¾ö²ß×öµÃ¾Í²»¹»×¼¡£
Ò»¶¨Òª×¢Ò⣬ÕâЩֻÊǽ¨Ò飬ֻÓе±ÄãµÄ±íÀïµÄÊý¾ÝÔ½À´Ô½¶àʱ£¬ÕâЩ½¨Òé²Å»á±äµÃ׼ȷ¡£

4.15.     SHOW STATUSµÄÆäËû²ÎÊý

ͨ¹ý SHOW STATUS¿ÉÒÔÌṩ·þÎñÆ÷״̬ÐÅÏ¢£¬SHOW STATUS ¿ÉÒÔ¸ù¾ÝÐèÒªÏÔʾ session ¼¶±ðµÄͳ¼Æ½á¹ûºÍ global¼¶±ðµÄͳ¼Æ½á¹û¡£
ÒÔϼ¸¸ö²ÎÊý¶Ô Myisam ºÍ Innodb ´æ´¢ÒýÇæ¶¼¼ÆÊý£º
1.Com_selectÖ´ÐÐ select ²Ù×÷µÄ´ÎÊý£¬Ò»´Î²éѯֻÀÛ¼Ó 1£»
2.Com_insert Ö´ÐÐ insert ²Ù×÷µÄ´ÎÊý£¬¶ÔÓÚÅúÁ¿²åÈëµÄ insert ²Ù×÷£¬Ö»ÀÛ¼ÓÒ»´Î£»
3.Com_update Ö´ÐÐ update ²Ù×÷µÄ´ÎÊý£»
4.Com_deleteÖ´ÐÐ delete ²Ù×÷µÄ´ÎÊý£»
ÒÔϼ¸¸ö²ÎÊýÊÇÕë¶Ô Innodb ´æ´¢ÒýÇæ¼ÆÊýµÄ£¬ÀÛ¼ÓµÄËã·¨Ò²ÂÔÓв»Í¬£º
1.Innodb_rows_read ²éѯ·µ»ØµÄÐÐÊý£»
2.Innodb_rows_inserted Ö´ÐÐ Insert ²Ù×÷²åÈëµÄÐÐÊý£»
3.Innodb_rows_updated Ö´ÐÐ update ²Ù×÷¸üеÄÐÐÊý£»
4.Innodb_rows_deletedÖ´ÐÐ delete ²Ù×÷ɾ³ýµÄÐÐÊý£»
ͨ¹ýÒÔÉϼ¸¸ö²ÎÊý£¬ ¿ÉÒÔºÜÈÝÒ×µÄÁ˽⵱ǰÊý¾Ý¿âµÄÓ¦ÓÃÊÇÒÔ²åÈë¸üÐÂΪÖ÷»¹ÊÇÒÔ²éѯ²Ù×÷ΪÖ÷£¬ ÒÔ¼°¸÷ÖÖÀàÐ굀 SQL ´óÖµÄÖ´ÐбÈÀýÊǶàÉÙ¡£ ¶ÔÓÚ¸üвÙ×÷µÄ¼ÆÊý £¬ÊǶÔÖ´ÐдÎÊýµÄ¼ÆÊý£¬²»ÂÛÌá½»»¹Êǻعö¶¼»áÀÛ¼Ó¡£
¶ÔÓÚÊÂÎñÐ͵ÄÓ¦Ó㬠ͨ¹ý Com_commit ºÍ Com_rollback ¿ÉÒÔÁ˽âÊÂÎñÌá½»ºÍ»Ø¹öµÄÇé¿ö£¬¶ÔÓڻعö²Ù×÷·Ç³£Æµ·±µÄÊý¾Ý¿â£¬¿ÉÄÜÒâζ×ÅÓ¦Óñàд´æÔÚÎÊÌâ¡£
´ËÍ⣬ÒÔϼ¸¸ö²ÎÊý±ãÓÚÎÒÃÇÁ˽âÊý¾Ý¿âµÄ»ù±¾Çé¿ö£º
1.Connections ÊÔͼÁ¬½Ó Mysql ·þÎñÆ÷µÄ´ÎÊý
2.Uptime·þÎñÆ÷¹¤×÷ʱ¼ä£¨Ã룩
3.Slow_queries Âý²éѯµÄ´ÎÊý

4.16.     ¶¨Î»Ö´ÐÐЧÂÊ½ÏµÍµÄ SQL Óï¾ä

SHOW PROCESSLIST;
ÃüÁîµÄÊä³ö½á¹ûÏÔʾÁËÓÐÄÄЩÏß³ÌÔÚÔËÐУ¬¿ÉÒÔ°ïÖúʶ±ð³öÓÐÎÊÌâµÄ²éѯÓï¾ä¡£
Èç¹ûÓÐ SUPER ȨÏÞ£¬Ôò¿ÉÒÔ¿´µ½È«²¿µÄỊ̈߳¬·ñÔò£¬Ö»ÄÜ¿´µ½×Ô¼º·¢ÆðµÄỊ̈߳¨ÕâÊÇÖ¸£¬µ±Ç°¶ÔÓ¦µÄ MySQL ÕÊ»§ÔËÐеÄỊ̈߳©¡£
µÃµ½Êý¾ÝÐÎʽÈçÏ£¨Ö»½ØÈ¡ÁËÈý Ìõ£©£º
mysql> show processlist;
+-----+-------------+--------------------+-------+---------+-------+----------------------------------+----------
| Id | User  | Host             | db    | Command | Time| State      | Info                                                                                           
+-----+-------------+--------------------+-------+---------+-------+----------------------------------+----------
|207|root  |192.168.0.20:51718 |mytest | Sleep     | 5     |          | NULL                                                                                                 
|208|root  |192.168.0.20:51719 |mytest | Sleep     | 5     |          | NULL       
|220|root  |192.168.0.20:51731 |mytest |Query     |84    |Locked|
select bookname,culture,value,type  from book where id=001
id £¬ ²»ÓÃ˵Á˰É£¬Ò»¸ö±êʶ£¬ÄãÒª kill Ò»¸öÓï¾äµÄʱºòºÜÓÐÓá£
user ÁУ¬ ÏÔʾµ±Ç°Óû§£¬Èç¹û²»ÊÇ root £¬Õâ¸öÃüÁî¾ÍÖ»ÏÔʾÄãȨÏÞ·¶Î§ÄÚµÄ sql Óï ¾ä¡£ host ÁУ¬ÏÔʾÕâ¸öÓï¾äÊÇ´ÓÄĸö ip µÄÄĸö¶Ë¿ÚÉÏ·¢³öµÄ¡£¿ÉÒÔÓÃÀ´×·×Ù³öÎÊÌâÓï¾äµÄÓû§¡£
db ÁУ¬ÏÔʾÕâ¸ö½ø³ÌĿǰÁ¬½ÓµÄÊÇ ÄĸöÊý¾Ý¿â ¡£
command ÁУ¬ÏÔʾµ±Ç°Á¬½ÓµÄÖ´ÐеÄÃüÁһ°ã¾ÍÊÇÐÝÃߣ¨ sleep £©£¬²éѯ£¨ query £©£¬Á¬½Ó£¨ connect £©¡£
time ÁУ¬´ËÕâ¸ö״̬³ÖÐøµÄʱ¼ä£¬µ¥Î»ÊÇÃë¡£
state ÁУ¬ÏÔʾʹÓõ±Ç°Á¬½ÓµÄ sql Óï¾äµÄ״̬£¬ºÜÖØÒªµÄÁУ¬ºóÐø»áÓÐËùÓеÄ״̬µÄÃèÊö£¬Çë×¢Ò⣬ state Ö»ÊÇÓï¾äÖ´ÐÐÖеÄijһ¸ö״̬£¬Ò»¸ö sql Óï ¾ä£¬ÒѲéѯΪÀý£¬¿ÉÄÜÐèÒª¾­¹ý copying to tmp table £¬ Sorting result £¬ Sending data µÈ״̬²Å¿ÉÒÔÍê³É
info ÁУ¬ÏÔʾÕâ¸ö sql Óï ¾ä£¬ÒòΪ³¤¶ÈÓÐÏÞ£¬ËùÒÔ³¤µÄ sql Óï¾ä¾ÍÏÔʾ²»È«£¬µ«ÊÇÒ»¸öÅжÏÎÊÌâÓï¾äµÄÖØÒªÒÀ¾Ý¡£
Õâ¸öÃüÁîÖÐ×î¹Ø¼üµÄ¾ÍÊÇ state ÁУ¬ mysql ÁгöµÄ״̬Ö÷ÒªÓÐÒÔϼ¸ ÖÖ£º
¡¡Checking table¡¡ÕýÔÚ¼ì²éÊý¾Ý±í£¨ÕâÊÇ×Ô¶¯µÄ£©¡£
¡¡Closing tables¡¡ÕýÔÚ½«±íÖÐÐ޸ĵÄÊý¾Ýˢе½´ÅÅÌÖУ¬Í¬Ê±ÕýÔڹرÕÒѾ­ÓÃÍêµÄ±í¡£ÕâÊÇÒ»¸öºÜ¿ìµÄ²Ù×÷£¬Èç¹û²»ÊÇÕâÑùµÄ»°£¬¾ÍÓ¦¸ÃÈ·ÈÏ´ÅÅ̿ռäÊÇ·ñÒѾ­ÂúÁË»òÕß´ÅÅÌÊÇ·ñÕý´¦ÓÚÖØ¸ºÖС£
¡¡ Connect Out¡¡¸´ÖÆ´Ó·þÎñÆ÷ÕýÔÚÁ¬½ÓÖ÷·þÎñÆ÷¡£
¡¡ Copying to tmp table on disk¡¡ÓÉÓÚÁÙʱ½á¹û¼¯´ó ÓÚ tmp_table_size £¬ÕýÔÚ½«ÁÙʱ±í´ÓÄÚ´æ´æ´¢×ªÎª´ÅÅÌ´æ´¢ÒԴ˽ÚÊ¡ÄÚ´æ¡£
¡¡ Creating tmp table¡¡ÕýÔÚ´´½¨ÁÙʱ±íÒÔ´æ·Å²¿·Ö²éѯ½á¹û¡£
¡¡ deleting from main table¡¡·þÎñÆ÷ÕýÔÚÖ´Ðжà±íɾ³ýÖеĵÚÒ»²¿·Ö£¬¸Õɾ³ýµÚÒ»¸ö±í¡£
¡¡ deleting from reference tables¡¡·þÎñÆ÷ÕýÔÚÖ´Ðжà±íɾ³ýÖеĵڶþ²¿ ·Ö£¬ÕýÔÚɾ³ýÆäËû ±íµÄ¼Ç¼¡£
¡¡ Flushing tables¡¡ÕýÔÚÖ´ÐÐ FLUSH TABLES £¬µÈ´ýÆäËûÏ̹߳رÕÊý¾Ý±í¡£
¡¡ Killed¡¡·¢ËÍÁËÒ»¸ö kill Çë Çó¸øÄ³Ị̈߳¬ÄÇôÕâ¸öÏ߳̽«»á¼ì²é kill ±ê־λ£¬Í¬Ê±»á·ÅÆúÏÂÒ»¸ö kill Çë Çó¡£ MySQL »áÔÚÿ´ÎµÄÖ÷Ñ­»·Öмì²é kill ±ê ־룬²»¹ýÓÐЩÇé¿öϸÃÏ߳̿ÉÄÜ»á¹ýһС¶Î²ÅÄÜËÀµô¡£Èç¹û¸ÃÏ̳̱߳»ÆäËûÏß³ÌËø×¡ÁË£¬ÄÇô kill Çë Çó»áÔÚËøÊÍ·ÅʱÂíÉÏÉúЧ¡£
¡¡ Locked¡¡±»ÆäËû²éÑ¯Ëø×¡ÁË¡£
¡¡ Sending data¡¡ÕýÔÚ´¦Àí SELECT ²éѯµÄ¼Ç¼£¬Í¬Ê±ÕýÔڰѽá¹û·¢Ë͸ø¿Í»§¶Ë¡£
¡¡ Sorting for group¡¡ÕýÔÚΪ GROUP BY ×öÅÅÐò¡£
¡¡ Sorting for order¡¡ÕýÔÚΪ ORDER BY ×öÅÅÐò¡£
¡¡ Opening tables¡¡Õâ¸ö¹ý³ÌÓ¦¸Ã»áºÜ¿ì£¬³ý·ÇÊܵ½ÆäËûÒòËØµÄ¸ÉÈÅ¡£ÀýÈ磬ÔÚÖ´ ALTER TABLE »ò LOCK TABLE Óï¾äÐÐÍêÒÔǰ£¬Êý¾Ý±íÎÞ·¨±»ÆäËûÏ̴߳ò¿ª¡£Õý³¢ÊÔ´ò¿ªÒ»¸ö±í¡£
¡¡ Removing duplicates¡¡ÕýÔÚÖ´ÐÐÒ»¸ö SELECT DISTINCT ·½Ê½µÄ²éѯ£¬µ«ÊÇ MySQL ÎÞ ·¨ÔÚǰһ¸ö½×¶ÎÓÅ»¯µôÄÇÐ©ÖØ¸´µÄ¼Ç¼¡£Òò´Ë£¬ MySQL ÐèÒªÔÙ´ÎÈ¥µôÖØ¸´µÄ¼Ç¼£¬È»ºóÔÙ °Ñ½á¹û·¢Ë͸ø¿Í»§¶Ë¡£
¡¡ Reopen table¡¡»ñµÃÁ˶ÔÒ»¸ö±íµÄËø£¬µ«ÊDZØÐëÔÚ±í½á¹¹ÐÞ¸ÄÖ®ºó²ÅÄÜ»ñµÃÕâ¸öËø¡£ÒѾ­ÊÍ·ÅËø£¬¹Ø±ÕÊý¾Ý±í£¬Õý³¢ÊÔ ÖØÐ´ò¿ªÊý¾Ý±í¡£
¡¡ Repair by sorting¡¡ÐÞ¸´Ö¸ÁîÕýÔÚÅÅÐòÒÔ´´½¨Ë÷Òý¡£
¡¡ Repair with keycache¡¡ÐÞ¸´Ö¸ÁîÕýÔÚÀûÓÃË÷Òý»º´æÒ»¸ö Ò»¸öµØ´´½¨ÐÂË÷Òý¡£Ëü»á±È Repair by sorting ÂýЩ¡£
¡¡ Searching rows for update¡¡ÕýÔÚ½²·ûºÏÌõ¼þµÄ¼Ç¼ÕÒ ³öÀ´ÒÔ±¸¸üС£Ëü±ØÐëÔÚ UPDATE ÒªÐÞ¸ÄÏà¹ØµÄ¼Ç¼֮ǰ¾ÍÍê³ÉÁË¡£
¡¡ Sleeping¡¡ÕýÔڵȴý¿Í»§¶Ë·¢ËÍÐÂÇëÇó .
¡¡ System lock¡¡ÕýÔڵȴýÈ¡µÃÒ»¸öÍⲿµÄÏµÍ³Ëø¡£Èç¹ûµ±Ç°Ã»ÓÐÔËÐжà¸ö mysqld ·þÎñÆ÷ͬʱÇëÇóͬһ¸ö±í£¬ÄÇô¿ÉÒÔͨ¹ýÔö¼Ó --skip-external-locking ²ÎÊýÀ´½ûÖ¹Íâ²¿ÏµÍ³Ëø¡£
¡¡ Upgrading lock¡¡ INSERT DELAYED ÕýÔÚ ³¢ÊÔÈ¡µÃÒ»¸öËø±íÒÔ²åÈëмǼ¡£
¡¡ Updating¡¡ÕýÔÚËÑË÷Æ¥ÅäµÄ¼Ç¼£¬²¢ÇÒÐÞ¸ÄËüÃÇ¡£
¡¡ User Lock¡¡ÕýÔڵȴý GET_LOCK() ¡£
¡¡ Waiting for tables¡¡¸ÃÏ̵߳õ½Í¨Öª£¬Êý¾Ý±í½á¹¹ÒѾ­±»ÐÞ¸ÄÁË£¬ÐèÒªÖØÐ´ò¿ªÊý¾Ý±íÒÔÈ¡µÃеĽṹ¡£È»ºó£¬ÎªÁËÄܵÄÖØ дò¿ªÊý¾Ý±í£¬±ØÐëµÈµ½ËùÓÐÆäËûÏ̹߳رÕÕâ¸ö±í¡£ÒÔϼ¸ÖÖÇé¿öÏ»á²úÉúÕâ¸ö֪ͨ£º FLUSH TABLES tbl_name, ALTER TABLE, RENAME TABLE, REPAIR TABLE, ANALYZE TABLE, »ò OPTIMIZE TABLE ¡£
¡¡ waiting for handler insert¡¡ INSERT DELAYED ÒѾ­´¦ÀíÍêÁËËùÓдý´¦ÀíµÄ²åÈë²Ù×÷£¬ÕýÔڵȴýеÄÇëÇó¡£
¡¡´ó ²¿·Ö״̬¶ÔÓ¦ºÜ¿ìµÄ²Ù×÷£¬Ö»ÒªÓÐÒ»¸öÏ̱߳£³Öͬһ¸ö״̬ºÃ¼¸ÃëÖÓ£¬ÄÇô¿ÉÄÜÊÇÓÐÎÊÌâ·¢ÉúÁË£¬ÐèÒª¼ì²éһϡ£
¡¡µ±MySQL·±Ã¦µÄʱºòÔËÐÐshow processlist£¬»á·¢ÏÖÓкܶàÐÐÊä³ö£¬Ã¿ÐÐÊä³ö¶ÔÓ¦Ò»¸öMySQLÁ¬½Ó¡£ÔõôÕï¶Ï·¢ÆðÁ¬½ÓµÄ½ø³ÌÊÇÄĸö£¿Ëüµ±Ç°ÕýÔÚ¸ÉÂïÄØ£¿
Ê×ÏÈ£¬ÐèҪͨ¹ýTCP Socket¶ø²»ÊÇUnix SocketÁ¬½ÓMySQL£¬ÕâÑùÔÚshow processlistµÄÊä³öÖоͻáÓÐÀ´Ô´¶Ë¿ÚºÅ¡£ÈçÏ£¬
mysql> show processlist;
+——–+——–+—————–+——+———+——+——-+——————+
| Id | User | Host | db | Command | Time | State | Info |
+——–+——–+—————–+——+———+——+——-+——————+
| 277801 | mydbuser | localhost:35558 | mydb | Sleep | 1 | | NULL |
| 277804 | mydbuser | localhost:35561 | mydb | Sleep | 1 | | NULL |
| 277805 | mydbuser | localhost:35562 | mydb | Sleep | 0 | | NULL |
+——–+——–+—————–+——+———+——+——-+——————+
ÔÚHostÁÐÓÐÀ´Ô´IPºÍ¶Ë¿ÚºÅ£¬È»ºóÎÒÃÇ´ÓÁ¬½Ó»úÆ÷²é¿´¶Ë¿ÚºÅÊÇË­´ò¿ªµÄ£¬
[root@localhost ~]# netstat -ntp | grep 35558
… 124.115.0.68:35558 ESTABLISHED 18783/httpd
¿ÉÖª½ø³Ì18783·¢ÆðµÄMySQLÁ¬½ÓÀ´Ô´¶Ë¿ÚÊÇ35558£¬È»ºó¾Í¿ÉÒÔÓÃstrace¹Û²ìÕâ¸ö½ø³ÌÁË¡£

4.17.     ÓÅ»¯ group by Óï¾ä

ĬÈÏÇé¿öÏ£¬MySQL ÅÅÐòËùÓÐ GROUP BY col1£¬col2£¬....¡£
²éѯµÄ·½·¨ÈçͬÔÚ²éѯÖÐÖ¸¶¨ ORDER BY col1£¬col2£¬...¡£
Èç¹ûÏÔʽ°üÀ¨Ò»¸ö°üº¬ÏàͬµÄÁÐµÄ ORDER BY×Ӿ䣬MySQL ¿ÉÒÔºÁ²»¼õËٵضÔËü½øÐÐÓÅ»¯£¬¾¡¹ÜÈÔÈ»½øÐÐÅÅÐò¡£
Èç¹û²éѯ°üÀ¨ GROUP BY µ«ÄãÏëÒª±ÜÃâÅÅÐò½á¹ûµÄÏûºÄ£¬Äã¿ÉÒÔÖ¸¶¨ ORDER BY NULL
½ûÖ¹ÅÅÐò¡£
ÀýÈ磺
SELECT jobName FROM jobinfo GROUP BY jobName ORDER BY NULL;

4.18.     ÓÅ»¯ order by Óï¾ä

1¡¢order by ºóµÄ×ֶΣ¬Èç¹ûÒª×ßË÷Òý£¬ÐëÓëwhere Ìõ¼þÀïµÄij×ֶν¨Á¢¸´ºÏË÷Òý£¡£¡»òÕß˵orcer byºóµÄ×Ö¶ÎÈç¹ûÒª×ßË÷ÒýÅÅÐò£¬ËüҪôÓëwhere Ìõ¼þÀïµÄ×ֶν¨Á¢¸´ºÏË÷Òý¡¾ÕâÀィÁ¢¸´ºÏË÷ÒýµÄʱºò£¬ÐèҪעÒ⸴ºÏË÷ÒýµÄÁÐ˳ÐòΪ£¨where×ֶΣ¬order by ×ֶΣ©£¬ÕâÑù²ÅÄÜÂú×ã×î×óÁÐÔ­Ôò£¬Ô­Òò¿ÉÄÜÊÇorder by×ֶβ¢ÄÜËãÔÚwhere ²éѯÌõ¼þÖУ¡¡¿£¬ÒªÃ´Ëü×ÔÉíÒªÔÚwhere Ìõ¼þÀï±»ÒýÓõ½£¡
2¡¢±ía      
idΪÆÕͨ×Ö¶Î,ÉÏÃæ½¨ÓÐË÷Òý
select * from a order by id   (Óò»ÉÏË÷Òý)
select id from a order by id (ÄÜÓÃÉÏË÷Òý)
select * from a where id=XX order by id  (ÄÜÓÃÉÏË÷Òý)
Òâ˼ÊÇ˵order by Òª±ÜÃâʹÓÃÎļþϵͳÅÅÐò£¬ÒªÃ´°Ñorder byµÄ×ֶγöÏÖÔÚselect ºó£¬ÒªÃ´Ê¹ÓÃorder by×ֶγöÏÖÔÚwhere Ìõ¼þÀҪô°Ñorder by×Ö¶ÎÓëwhere Ìõ¼þ×ֶν¨Á¢¸´ºÏË÷Òý£¡


 ±¾ÎİæÈ¨¹éÀÖÓã²¥¿ÍJavaÅàѵѧԺËùÓУ¬»¶Ó­×ªÔØ£¬×ªÔØÇë×¢Ã÷×÷Õß³ö´¦¡£Ð»Ð»£¡
×÷ÕߣºÀÖÓã²¥¿ÍJavaÅàѵѧԺ
Ê×·¢£ºhttp://www.itcast.cn/javaee 
 
0 ·ÖÏíµ½£º
ºÍÎÒÃÇÔÚÏß½»Ì¸£¡
¡¾ÍøÕ¾µØÍ¼¡¿¡¾sitemap¡¿