¶Ô±ÈcharºÍvarcharËæ±ãÔÚgoogle»ò°Ù¶ÈÖÐËÑһϵõ½µÄ½áÂÛ´ó¸Å¶¼ÊÇ"char¶¨³¤,varchar²»¶¨³¤,charÒª±ÈvarcharÕ¼Óøü¶àµÄ¿Õ¼ä,ÓÉÓÚ¶¨³¤charµÄЧÂʸßÓÚvarchar,char×î´ó255,varchar×î´ó65536"¸ü¸ß¼¶Ò»µãµÄÊý¾ÝÊÇ"charÔÚ´æÈëºÍÈ¡³öµÄʱºò,»á×Ô¶¯°ÑĩβµÄ¿Õ¸ñÈ¥µô,varchar»á¶îÍâµÄ¶àÓÃ1-2¸ö×Ö½ÚÀ´´æ·Å×Ö·û³¤¶È,ÁÐÖÐÓÐÒ»¸övarchar»á×Ô¶¯°Ñcharת»»³Évarchar,¶øµ±varchar³¤¶ÈСÓÚ4ʱ,×Ô¶¯µÄ°Ñvarcharת»»³Échar..."
Ò»°ãÈÏΪ¿Õ¼ä»»Ê±¼ä,ÏÖÔÚ´ÅÅÌÓÖ´óÓÖ²»ÖµÇ®!
µ±Ê¹ÓÃÈ«±í¶¼ÊÇcharÕâµÄ×ֶεÄʱºò,ÄÇô±íÊôÐÔRow_formatÊÇFixedÒ²¾ÍÊǾ²Ì¬±í,ÓëÖ®¶ÔÓ¦µÄ×ÔÈ»¾ÍÊǶ¯Ì¬±íDynamic,¾²Ì¬±í±È¶¯Ì¬±íЧÂÊÒª¸ß,Ö÷ÒªÊÇÒòΪ,»ùÓÚÁ½µã:
1)ûÓÐË鯬,ÿÐеij¤¶ÈÊǹ̶¨,ËùÒÔÔÚÆµ·±¸üеij¡¾°ÏÂ,ÓÈÆäÊÇij¸ö×Ö¶ÎÓÉС±ä´ó.
2)·½±ãÊý¾ÝÎļþÖ¸ÕëµÄ²Ù×÷,ÔÚmyisamÖÐÓÐÒ»¸öÊý¾ÝÎļþÖ¸ÕëµÄ¸ÅÄî,ÊÇÓÃÀ´Ö¸ÏòÊý¾ÝÎļþ,±ÈÈçÔÚË÷ÒýÖÐÖ¸ÏòÊý¾ÝÎļþ.¾²Ì¬±íµÄÆ«ÒÆÁ¿µÄ¹Ì¶¨²»±äµÄ,¶øÔÚ¶¯Ì¬±íÖÐÿÐеÄÊý¾Ý³¤¶È´óС²»Ò»,¾Í¿ÉÄܵ¼ÖÂÊý¾Ý¸ü¶àµÄ¿ªÏú
»ùÓÚÒÔÉÏÁ½µã,ËùÒÔ¾²Ì¬±íÔÚ²éѯ,ÐÞ¸ÄÓµÓнϴóÓÅÊÆ,µ«ÊÇÕâ¸öÓÅÊÆÒ²ÊÇÓÐÊÊÓó¡¾°µÄ.
Ê×ÏȲÂÏëcharÓÉÓÚÿ´Î´æÈ¡¶¼»á×Ô¶¯µÄÏ÷µôĩβµÄ¿Õ¸ñ,¶øÇÒÊý¾ÝÎļþÒ²´ó,ËùÒÔ»áʹÓøü¶àµÄcpuºÍÄÚ´æ×ÊÔ´,ÓÈÆäÔÚÈ¡µÄʱºò,ÒªÊdz¤¶Ì²î¾à½Ï´óµÄʱºò,»¹ÊÇ»áºÜÀ˷ѲÙ×÷µÄ.
Æä´ÎÑéÖ¤Ïë·¨,Ê×ÏȲâÊÔ²åÈëÐÔÄÜ,½¨ÁË2ÕÅ±í²¢µ÷ÓÃsp·Ö±ð²åÈë200WµÄÊý¾Ý
CREATE TABLE `isam_char` (
`content` char(255) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
CREATE TABLE `isam_vc` (
`content` varchar(255) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
call insert_isam(2000000,'isam_char');
call insert_isam(2000000,'isam_vc');
¶à´Îƽ¾ùisam_char²åÈë200WµÄÊý¾ÝΪ138.21s,¶øisam_vcÉÙÁËÔ¼20sΪ119.80s,ÕâÓ¦¸ÃÊÇÿ´Î²åÈëµÄʱºò,mysqlÒª°Ñchar×Ö¶ÎÌî³äµ½255µÄ²Ù×÷.¹Û²ìÊý¾ÝÎļþ´óС,isam_vcΪ235.8M¶øisam_charΪ1.4G!
ÔÙ²âÊÔ²éѯ,ΪÁ˱£Ö¤Á½ÕßÒ»ÖÂ,Ê×ÏȰÑisam_charÖÐÊý¾Ýɾ³ý,ÔÙ°Ñisam_vcÖÐÊý¾Ýµ¼Èëisam_charÖÐ,ÎÞË÷Òý,½û±Õquery_cache
truncate table isam_char;##¹Û²ìÁËÏÂÊý¾ÝÎļþ,±»Çî¿Õ³É0
insert into isam_char select * from isam_vc;##¹Û²ìÁËÏÂÊý¾ÝÎļþ,ÒÀÈ»ÊÇ1.4G
select * from isam_char limit 1555555,5;
select * from isam_vc limit 1555555,5;
ÒÀ¾É¶à´Î²éѯȥƽ¾ùÖµ,isam_char±íƽ¾ùֵΪ10.50s,¶øisam_vcÔò