±à¼ÍƼö: |
±¾ÎÄÀ´×ÔÓÚcsdn,¶ÔÓÚmysqlºÜ¶àÈ˶಻İÉú£¬ÄÇômysqlÔÀíÊÇʲôÑùµÄÄØ£¬ÔõôÓÅ»¯£¿ÔõôʹÓã¿¿ÉÄÜÓÐЩÈË֪ʶ²»³ÉÌåϵ£¬ÄÇôÏÂÎÄΪ´ó¼Ò½²½â¡£ |
|
˵µ½Ë÷Òý£¬ºÜ¶àÈ˶¼ÖªµÀ¡°Ë÷ÒýÊÇÒ»¸öÅÅÐòµÄÁÐ±í£¬ÔÚÕâ¸öÁбíÖд洢×ÅË÷ÒýµÄÖµºÍ°üº¬Õâ¸öÖµµÄÊý¾ÝËùÔÚÐеÄÎïÀíµØÖ·£¬ÔÚÊý¾ÝÊ®·ÖÅÓ´óµÄʱºò£¬Ë÷Òý¿ÉÒÔ´ó´ó¼Ó¿ì²éѯµÄËÙ¶È£¬ÕâÊÇÒòΪʹÓÃË÷Òýºó¿ÉÒÔ²»ÓÃɨÃèÈ«±íÀ´¶¨Î»Ä³ÐеÄÊý¾Ý£¬¶øÊÇÏÈͨ¹ýË÷Òý±íÕÒµ½¸ÃÐÐÊý¾Ý¶ÔÓ¦µÄÎïÀíµØÖ·È»ºó·ÃÎÊÏàÓ¦µÄÊý¾Ý¡£¡±
µ«ÊÇË÷ÒýÊÇÔõôʵÏÖµÄÄØ£¿ÒòΪË÷Òý²¢²»ÊǹØÏµÄ£Ð͵Ä×é³É²¿·Ö£¬Òò´Ë²»Í¬µÄDBMSÓв»Í¬µÄʵÏÖ£¬ÎÒÃÇÕë¶ÔMySQLÊý¾Ý¿âµÄʵÏÖ½øÐÐ˵Ã÷¡£±¾ÎÄÄÚÈÝÉæ¼°MySQLÖÐË÷ÒýµÄÓï·¨¡¢Ë÷ÒýµÄÓÅȱµã¡¢Ë÷ÒýµÄ·ÖÀà¡¢Ë÷ÒýµÄʵÏÖÔÀí¡¢Ë÷ÒýµÄʹÓòßÂÔ¡¢Ë÷ÒýµÄÓÅ»¯¼¸²¿·Ö¡£
Ò»¡¢MySQLÖÐË÷ÒýµÄÓï·¨
´´½¨Ë÷Òý
ÔÚ´´½¨±íµÄʱºòÌí¼ÓË÷Òý
CREATE TABLE mytable(
ID INT NOT NULL,
username VARCHAR(16) NOT NULL,
INDEX [indexName] (username(length))
); |
ÔÚ´´½¨±íÒÔºóÌí¼ÓË÷Òý
ALTER TABLE my_table
ADD [UNIQUE] INDEX index_name(column_name);
»òÕß
CREATE INDEX index_name ON my_table(column_name); |
×¢Ò⣺
1¡¢Ë÷ÒýÐèÒªÕ¼ÓôÅÅ̿ռ䣬Òò´ËÔÚ´´½¨Ë÷ÒýʱҪ¿¼Âǵ½´ÅÅ̿ռäÊÇ·ñ×ã¹»
2¡¢´´½¨Ë÷ÒýʱÐèÒª¶Ô±í¼ÓËø£¬Òò´Ëʵ¼Ê²Ù×÷ÖÐÐèÒªÔÚÒµÎñ¿ÕÏÐÆÚ¼ä½øÐÐ
¸ù¾ÝË÷Òý²éѯ
¾ßÌå²éѯ£º
SELECT * FROM table_name WHERE column_1=column_2;(Ϊcolumn_1½¨Á¢ÁËË÷Òý)
»òÕßÄ£ºý²éѯ
SELECT * FROM table_name WHERE column_1 LIKE '%Èý'
SELECT * FROM table_name WHERE column_1 LIKE 'Èý%'
SELECT * FROM table_name WHERE column_1 LIKE '%Èý%'
SELECT * FROM table_name WHERE column_1 LIKE '_ºÃ_'
Èç¹ûÒª±íʾÔÚ×Ö·û´®ÖмÈÓÐAÓÖÓÐB£¬ÄÇô²éѯÓï¾äΪ£º
SELECT * FROM table_name WHERE column_1 LIKE '%A%'
AND column_1 LIKE '%B%';
SELECT * FROM table_name WHERE column_1 LIKE '[ÕÅÀîÍõ]Èý';
//±íʾcolumn_1ÖÐÓÐÆ¥ÅäÕÅÈý¡¢ÀîÈý¡¢ÍõÈýµÄ¶¼¿ÉÒÔ
SELECT * FROM table_name WHERE column_1 LIKE '[^ÕÅÀîÍõ]Èý';
//±íʾcolumn_1ÖÐÓÐÆ¥Åä³ýÁËÕÅÈý¡¢ÀîÈý¡¢ÍõÈýµÄÆäËûÈý¶¼¿ÉÒÔ
//ÔÚÄ£ºý²éѯÖУ¬%±íʾÈÎÒâ0¸ö»ò¶à¸ö×Ö·û£»_±íʾÈÎÒâµ¥¸ö×Ö·û£¨ÓÐÇÒ½öÓУ©£¬Í¨³£ÓÃÀ´ÏÞÖÆ×Ö·û´®³¤¶È;[]±íʾÆäÖеÄijһ¸ö×Ö·û£»[^]±íʾ³ýÁËÆäÖеÄ×Ö·ûµÄËùÓÐ×Ö·û
»òÕßÔÚÈ«ÎÄË÷ÒýÖÐÄ£ºý²éѯ
SELECT * FROM table_name WHERE MATCH(content)
AGAINST('word1','word2',...);
- |
ɾ³ýË÷Òý
DROP INDEX my_index
ON tablename£»
»òÕß
ALTER TABLE table_name DROP INDEX index_name; |
²é¿´±íÖеÄË÷Òý
SHOW INDEX FROM
tablename |
²é¿´²éѯÓï¾äʹÓÃË÷ÒýµÄÇé¿ö
//explain ¼Ó²éѯÓï¾ä
explain SELECT * FROM table_name WHERE column_1='123'; |
¶þ¡¢Ë÷ÒýµÄÓÅȱµã
ÓÅÊÆ£º¿ÉÒÔ¿ìËÙ¼ìË÷£¬¼õÉÙI/O´ÎÊý£¬¼Ó¿ì¼ìË÷ËÙ¶È£»¸ù¾ÝË÷Òý·Ö×éºÍÅÅÐò£¬¿ÉÒÔ¼Ó¿ì·Ö×éºÍÅÅÐò£»
ÁÓÊÆ£ºË÷Òý±¾ÉíÒ²ÊÇ±í£¬Òò´Ë»áÕ¼Óô洢¿Õ¼ä£¬Ò»°ãÀ´Ëµ£¬Ë÷Òý±íÕ¼ÓõĿռäµÄÊý¾Ý±íµÄ1.5±¶£»Ë÷Òý±íµÄά»¤ºÍ´´½¨ÐèҪʱ¼ä³É±¾£¬Õâ¸ö³É±¾Ëæ×ÅÊý¾ÝÁ¿Ôö´ó¶øÔö´ó£»¹¹½¨Ë÷Òý»á½µµÍÊý¾Ý±íµÄÐ޸IJÙ×÷£¨É¾³ý£¬Ìí¼Ó£¬Ð޸쩵ÄЧÂÊ£¬ÒòΪÔÚÐÞ¸ÄÊý¾Ý±íµÄͬʱ»¹ÐèÒªÐÞ¸ÄË÷Òý±í£»
Èý¡¢Ë÷ÒýµÄ·ÖÀà
³£¼ûµÄË÷ÒýÀàÐÍÓУºÖ÷¼üË÷Òý¡¢Î¨Ò»Ë÷Òý¡¢ÆÕͨË÷Òý¡¢È«ÎÄË÷Òý¡¢×éºÏË÷Òý
1¡¢Ö÷¼üË÷Òý£º¼´Ö÷Ë÷Òý£¬¸ù¾ÝÖ÷¼üpk_clolum£¨length£©½¨Á¢Ë÷Òý£¬²»ÔÊÐíÖØ¸´£¬²»ÔÊÐí¿ÕÖµ£»
ALTER TABLE 'table_name'
ADD PRIMARY KEY pk_index('col')£» |
2¡¢Î¨Ò»Ë÷Òý£ºÓÃÀ´½¨Á¢Ë÷ÒýµÄÁеÄÖµ±ØÐëÊÇΨһµÄ£¬ÔÊÐí¿ÕÖµ
ALTER TABLE
'table_name' ADD UNIQUE index_name('col')£» |
3¡¢ÆÕͨË÷Òý£ºÓñíÖÐµÄÆÕͨÁй¹½¨µÄË÷Òý£¬Ã»ÓÐÈκÎÏÞÖÆ
ALTER TABLE
'table_name' ADD INDEX index_name('col')£» |
4¡¢È«ÎÄË÷Òý£ºÓôóÎı¾¶ÔÏóµÄÁй¹½¨µÄË÷Òý£¨ÏÂÒ»²¿·Ö»á½²½â£©
ALTER TABLE
'table_name' ADD FULLTEXT INDEX ft_index('col')£» |
5¡¢×éºÏË÷Òý£ºÓöà¸öÁÐ×éºÏ¹¹½¨µÄË÷Òý£¬Õâ¶à¸öÁÐÖеÄÖµ²»ÔÊÐíÓпÕÖµ
ALTER TABLE
'table_name' ADD INDEX index_name ('col1', 'col2', 'col3')£» |
*×ñÑ¡°×î×óǰ׺¡±ÔÔò£¬°Ñ×î³£ÓÃ×÷Ϊ¼ìË÷»òÅÅÐòµÄÁзÅÔÚ×î×ó£¬ÒÀ´ÎµÝ¼õ£¬×éºÏË÷ÒýÏ൱ÓÚ½¨Á¢ÁËcol1,col1col2,
col1col2col3Èý¸öË÷Òý£¬¶øcol2»òÕßcol3ÊDz»ÄÜʹÓÃË÷ÒýµÄ¡£
*ÔÚʹÓÃ×éºÏË÷ÒýµÄʱºò¿ÉÄÜÒòΪÁÐÃû³¤¶È¹ý³¤¶øµ¼ÖÂË÷ÒýµÄkeyÌ«´ó£¬µ¼ÖÂЧÂʽµµÍ£¬ÔÚÔÊÐíµÄÇé¿öÏ£¬¿ÉÒÔֻȡcol1ºÍcol2µÄǰ¼¸¸ö×Ö·û×÷ΪË÷Òý
ALTER TABLE
'table_name' ADD INDEX index_name(col1(4),col2£¨3))£» |
±íʾʹÓÃcol1µÄǰ4¸ö×Ö·ûºÍcol2µÄǰ3¸ö×Ö·û×÷ΪË÷Òý
ËÄ¡¢Ë÷ÒýµÄʵÏÖÔÀí
MySQLÖ§³ÖÖî¶à´æ´¢ÒýÇæ£¬¶ø¸÷ÖÖ´æ´¢ÒýÇæ¶ÔË÷ÒýµÄÖ§³ÖÒ²¸÷²»Ïàͬ£¬Òò´ËMySQLÊý¾Ý¿âÖ§³Ö¶àÖÖË÷ÒýÀàÐÍ£¬ÈçBTreeË÷Òý£¬B+TreeË÷Òý£¬¹þÏ£Ë÷Òý£¬È«ÎÄË÷ÒýµÈµÈ£¬
1¡¢¹þÏ£Ë÷Òý£º
Ö»ÓÐmemory£¨Äڴ棩´æ´¢ÒýÇæÖ§³Ö¹þÏ£Ë÷Òý£¬¹þÏ£Ë÷ÒýÓÃË÷ÒýÁеÄÖµ¼ÆËã¸ÃÖµµÄhashCode£¬È»ºóÔÚhashCodeÏàÓ¦µÄλÖôæÖ´¸ÃÖµËùÔÚÐÐÊý¾ÝµÄÎïÀíλÖã¬ÒòΪʹÓÃÉ¢ÁÐËã·¨£¬Òò´Ë·ÃÎÊËٶȷdz£¿ì£¬µ«ÊÇÒ»¸öÖµÖ»ÄܶÔÓ¦Ò»¸öhashCode£¬¶øÇÒÊÇÉ¢Áеķֲ¼·½Ê½£¬Òò´Ë¹þÏ£Ë÷Òý²»Ö§³Ö·¶Î§²éÕÒºÍÅÅÐòµÄ¹¦ÄÜ¡£
2¡¢È«ÎÄË÷Òý£º
FULLTEXT£¨È«ÎÄ£©Ë÷Òý£¬½ö¿ÉÓÃÓÚMyISAMºÍInnoDB£¬Õë¶Ô½Ï´óµÄÊý¾Ý£¬Éú³ÉÈ«ÎÄË÷Òý·Ç³£µÄÏûºÄʱ¼äºÍ¿Õ¼ä¡£¶ÔÓÚÎı¾µÄ´ó¶ÔÏ󣬻òÕ߽ϴóµÄCHARÀàÐ͵ÄÊý¾Ý£¬Èç¹ûʹÓÃÆÕͨË÷Òý£¬ÄÇôƥÅäÎı¾Ç°¼¸¸ö×Ö·û»¹ÊÇ¿ÉÐе쬵«ÊÇÏëҪƥÅäÎı¾ÖмäµÄ¼¸¸öµ¥´Ê£¬ÄÇô¾ÍҪʹÓÃLIKE
%word%À´Æ¥Å䣬ÕâÑùÐèÒªºÜ³¤µÄʱ¼äÀ´´¦Àí£¬ÏìӦʱ¼ä»á´ó´óÔö¼Ó£¬ÕâÖÖÇé¿ö£¬¾Í¿ÉʹÓÃʱFULLTEXTË÷ÒýÁË£¬ÔÚÉú³ÉFULLTEXTË÷Òýʱ£¬»áΪÎı¾Éú³ÉÒ»·Ýµ¥´ÊµÄÇåµ¥£¬ÔÚË÷Òýʱ¼°¸ù¾ÝÕâ¸öµ¥´ÊµÄÇåµ¥À´Ë÷Òý¡£FULLTEXT¿ÉÒÔÔÚ´´½¨±íµÄʱºò´´½¨£¬Ò²¿ÉÒÔÔÚÐèÒªµÄʱºòÓÃALTER»òÕßCREATE
INDEXÀ´Ìí¼Ó£º
//´´½¨±íµÄʱºòÌí¼ÓFULLTEXTË÷Òý
CTREATE TABLE my_table(
id INT(10) PRIMARY KEY,
name VARCHAR(10) NOT NULL,
my_text TEXT,
FULLTEXT(my_text)
)ENGINE=MyISAM DEFAULT CHARSET=utf8;
|
//´´½¨±íÒÔºó£¬ÔÚÐèÒªµÄʱºòÌí¼ÓFULLTEXTË÷Òý
ALTER TABLE my_table ADD FULLTEXT INDEX ft_index(column_name); |
È«ÎÄË÷ÒýµÄ²éѯҲÓÐ×Ô¼ºÌØÊâµÄÓï·¨£¬¶ø²»ÄÜʹÓÃLIKE %²éѯ×Ö·û´®%µÄÄ£ºý²éѯÓï·¨
SELECT * FROM
table_name MATCH(ft_index) AGAINST('²éѯ×Ö·û´®'); |
×¢Ò⣺
*¶ÔÓڽϴóµÄÊý¾Ý¼¯£¬°ÑÊý¾ÝÌí¼Óµ½Ò»¸öûÓÐFULLTEXTË÷ÒýµÄ±í£¬È»ºóÌí¼ÓFULLTEXTË÷ÒýµÄËٶȱȰÑÊý¾ÝÌí¼Óµ½Ò»¸öÒѾÓÐFULLTEXTË÷ÒýµÄ±í¿ì¡£
*5.6°æ±¾Ç°µÄMySQL×Ô´øµÄÈ«ÎÄË÷ÒýÖ»ÄÜÓÃÓÚMyISAM´æ´¢ÒýÇæ£¬Èç¹ûÊÇÆäËüÊý¾ÝÒýÇæ£¬ÄÇôȫÎÄË÷Òý²»»áÉúЧ¡£5.6°æ±¾Ö®ºóInnoDB´æ´¢ÒýÇæ¿ªÊ¼Ö§³ÖÈ«ÎÄË÷Òý
*ÔÚMySQLÖУ¬È«ÎÄË÷ÒýÖ§¶ÓÓ¢ÎÄÓÐÓã¬Ä¿Ç°¶ÔÖÐÎÄ»¹²»Ö§³Ö¡£5.7°æ±¾Ö®ºóͨ¹ýʹÓÃngram²å¼þ¿ªÊ¼Ö§³ÖÖÐÎÄ¡£
*ÔÚMySQLÖУ¬Èç¹û¼ìË÷µÄ×Ö·û´®Ì«¶ÌÔòÎÞ·¨¼ìË÷µÃµ½Ô¤ÆÚµÄ½á¹û£¬¼ìË÷µÄ×Ö·û´®³¤¶ÈÖÁÉÙΪ4×Ö½Ú£¬´ËÍ⣬Èç¹û¼ìË÷µÄ×Ö·û°üÀ¨Í£Ö¹´Ê£¬ÄÇôֹͣ´Ê»á±»ºöÂÔ¡£
* ¸üÉîÈëµÄÀí½â²Î¿¼ÎÄÕ£ºÈ«ÎÄË÷ÒýµÄÉîÈëÀí½â
3¡¢BTreeË÷ÒýºÍB+TreeË÷Òý
BTreeË÷Òý
BTreeÊÇÆ½ºâËÑË÷¶à²æÊ÷£¬ÉèÊ÷µÄ¶ÈΪ2d£¨d>1£©£¬¸ß¶ÈΪh£¬ÄÇôBTreeÒªÂú×ãÒÔÒ»ÏÂÌõ¼þ£º
ÿ¸öÒ¶×Ó½áµãµÄ¸ß¶ÈÒ»Ñù£¬µÈÓÚh£»
ÿ¸ö·ÇÒ¶×Ó½áµãÓÉn-1¸ökeyºÍn¸öÖ¸Õëpoint×é³É£¬ÆäÖÐd<=n<=2d,
keyºÍpointÏ໥¼ä¸ô£¬½áµãÁ½¶ËÒ»¶¨ÊÇkey£»
Ò¶×Ó½áµãÖ¸Õ붼Ϊnull£»
·ÇÒ¶×Ó½áµãµÄkey¶¼ÊÇ[key,data]¶þÔª×飬ÆäÖÐkey±íʾ×÷ΪË÷ÒýµÄ¼ü£¬dataΪ¼üÖµËùÔÚÐеÄÊý¾Ý£»
BTreeµÄ½á¹¹ÈçÏ£º

ÔÚBTreeµÄ»ú¹¹Ï£¬¾Í¿ÉÒÔʹÓöþ·Ö²éÕҵIJéÕÒ·½Ê½£¬²éÕÒ¸´ÔÓ¶ÈΪh*log(n)£¬Ò»°ãÀ´ËµÊ÷µÄ¸ß¶ÈÊǺÜСµÄ£¬Ò»°ãΪ3×óÓÒ£¬Òò´ËBTreeÊÇÒ»¸ö·Ç³£¸ßЧµÄ²éÕҽṹ¡£
B+TreeË÷Òý
B+TreeÊÇBTreeµÄÒ»¸ö±äÖÖ£¬ÉèdΪÊ÷µÄ¶ÈÊý£¬hΪÊ÷µÄ¸ß¶È£¬B+TreeºÍBTreeµÄ²»Í¬Ö÷ÒªÔÚÓÚ£º
B+TreeÖеķÇÒ¶×Ó½áµã²»´æ´¢Êý¾Ý£¬Ö»´æ´¢¼üÖµ£»
B+TreeµÄÒ¶×Ó½áµãûÓÐÖ¸Õ룬ËùÓмüÖµ¶¼»á³öÏÖÔÚÒ¶×Ó½áµãÉÏ£¬ÇÒkey´æ´¢µÄ¼üÖµ¶ÔÓ¦dataÊý¾ÝµÄÎïÀíµØÖ·£»
B+TreeµÄÿ¸ö·ÇÒ¶×Ó½ÚµãÓÉn¸ö¼üÖµkeyºÍn¸öÖ¸Õëpoint×é³É£»
B+TreeµÄ½á¹¹ÈçÏ£º

B+Tree¶Ô±ÈBTreeµÄÓŵ㣺
1¡¢´ÅÅ̶Áд´ú¼Û¸üµÍ
Ò»°ãÀ´ËµB+Tree±ÈBTree¸üÊʺÏʵÏÖÍâ´æµÄË÷Òý½á¹¹£¬ÒòΪ´æ´¢ÒýÇæµÄÉè¼Æ×¨¼ÒÇÉÃîµÄÀûÓÃÁËÍâ´æ£¨´ÅÅÌ£©µÄ´æ´¢½á¹¹£¬¼´´ÅÅ̵Ä×îС´æ´¢µ¥Î»ÊÇÉÈÇø£¨sector£©£¬¶ø²Ù×÷ϵͳµÄ¿é£¨block£©Í¨³£ÊÇÕûÊý±¶µÄsector£¬²Ù×÷ϵͳÒÔÒ³£¨page£©Îªµ¥Î»¹ÜÀíÄڴ棬һҳ£¨page£©Í¨³£Ä¬ÈÏΪ4K£¬Êý¾Ý¿âµÄҳͨ³£ÉèÖÃΪ²Ù×÷ϵͳҳµÄÕûÊý±¶£¬Òò´ËË÷Òý½á¹¹µÄ½Úµã±»Éè¼ÆÎªÒ»¸öÒ³µÄ´óС£¬È»ºóÀûÓÃÍâ´æµÄ¡°Ô¤¶ÁÈ¡¡±ÔÔò£¬Ã¿´Î¶ÁÈ¡µÄʱºò£¬°ÑÕû¸ö½ÚµãµÄÊý¾Ý¶ÁÈ¡µ½ÄÚ´æÖУ¬È»ºóÔÚÄÚ´æÖвéÕÒ£¬ÒÑÖªÄÚ´æµÄ¶ÁÈ¡ËÙ¶ÈÊÇÍâ´æ¶ÁÈ¡I/OËٶȵļ¸°Ù±¶£¬ÄÇôÌáÉý²éÕÒËٶȵĹؼü¾ÍÔÚÓÚ¾¡¿ÉÄÜÉٵĴÅÅÌI/O£¬ÄÇô¿ÉÒÔÖªµÀ£¬Ã¿¸ö½ÚµãÖеÄkey¸öÊýÔ½¶à£¬ÄÇôÊ÷µÄ¸ß¶ÈԽС£¬ÐèÒªI/OµÄ´ÎÊýÔ½ÉÙ£¬Òò´ËÒ»°ãÀ´ËµB+Tree±ÈBTree¸ü¿ì£¬ÒòΪB+TreeµÄ·ÇÒ¶½ÚµãÖв»´æ´¢data£¬¾Í¿ÉÒÔ´æ´¢¸ü¶àµÄkey¡£
2¡¢²éѯËٶȸüÎȶ¨
ÓÉÓÚB+Tree·ÇÒ¶×ӽڵ㲻´æ´¢Êý¾Ý£¨data£©£¬Òò´ËËùÓеÄÊý¾Ý¶¼Òª²éѯÖÁÒ¶×ӽڵ㣬¶øÒ¶×Ó½ÚµãµÄ¸ß¶È¶¼ÊÇÏàͬµÄ£¬Òò´ËËùÓÐÊý¾ÝµÄ²éѯËٶȶ¼ÊÇÒ»ÑùµÄ¡£
¸ü¶à²Ù×÷ϵͳÄÚÈݲο¼£º
Ó²Å̽ṹ
ÉÈÇø¡¢¿é¡¢´Ø¡¢Ò³µÄÇø±ð
²Ù×÷ϵͳ²ãÓÅ»¯£¨½ø½×£¬³õѧ²»Óÿ´£©
´øË³ÐòË÷ÒýµÄB+TREE
ºÜ¶à´æ´¢ÒýÇæÔÚB+TreeµÄ»ù´¡ÉϽøÐÐÁËÓÅ»¯£¬Ìí¼ÓÁËÖ¸ÏòÏàÁÚÒ¶½ÚµãµÄÖ¸Õ룬ÐγÉÁË´øÓÐ˳Ðò·ÃÎÊÖ¸ÕëµÄB+Tree£¬ÕâÑù×öÊÇΪÁËÌá¸ßÇø¼ä²éÕÒµÄЧÂÊ£¬Ö»ÒªÕÒµ½µÚÒ»¸öÖµÄÇô¾Í¿ÉÒÔ˳ÐòµÄ²éÕÒºóÃæµÄÖµ¡£
B+TreeµÄ½á¹¹ÈçÏ£º

¾Û´ØË÷ÒýºÍ·Ç¾Û´ØË÷Òý
·ÖÎöÁËMySQLµÄË÷Òý½á¹¹µÄʵÏÖÔÀí£¬È»ºóÎÒÃÇÀ´¿´¿´¾ßÌåµÄ´æ´¢ÒýÇæÔõôʵÏÖË÷Òý½á¹¹µÄ£¬MySQLÖÐ×î³£¼ûµÄÁ½ÖÖ´æ´¢ÒýÇæ·Ö±ðÊÇMyISAMºÍInnoDB£¬·Ö±ðʵÏÖÁ˷Ǿ۴ØË÷ÒýºÍ¾Û´ØË÷Òý¡£
¾Û´ØË÷ÒýµÄ½âÊÍÊÇ:¾Û´ØË÷ÒýµÄ˳Ðò¾ÍÊÇÊý¾ÝµÄÎïÀí´æ´¢Ë³Ðò
·Ç¾Û´ØË÷ÒýµÄ½âÊÍÊÇ:Ë÷Òý˳ÐòÓëÊý¾ÝÎïÀíÅÅÁÐ˳ÐòÎÞ¹Ø
£¨ÕâÑù˵ÆðÀ´²¢²»ºÃÀí½â£¬ÈÃÈËÃþ²»×ÅÍ·ÄÔ£¬Çå¼ÌÐø¿´ÏÂÎÄ£¬²¢ÔÚ²åͼÏ·½¶ÔÉÏÊöÁ½¾ä»°ÓнâÊÍ£©
Ê×ÏÈÒª½éÉܼ¸¸ö¸ÅÄÔÚË÷ÒýµÄ·ÖÀàÖУ¬ÎÒÃÇ¿ÉÒÔ°´ÕÕË÷ÒýµÄ¼üÊÇ·ñΪÖ÷¼üÀ´·ÖΪ¡°Ö÷Ë÷Òý¡±ºÍ¡°¸¨ÖúË÷Òý¡±£¬Ê¹ÓÃÖ÷¼ü¼üÖµ½¨Á¢µÄË÷Òý³ÆÎª¡°Ö÷Ë÷Òý¡±£¬ÆäËüµÄ³ÆÎª¡°¸¨ÖúË÷Òý¡±¡£Òò´ËÖ÷Ë÷ÒýÖ»ÄÜÓÐÒ»¸ö£¬¸¨ÖúË÷Òý¿ÉÒÔÓкܶà¸ö¡£
MyISAM¡ª¡ª·Ç¾Û´ØË÷Òý
MyISAM´æ´¢ÒýÇæ²ÉÓõÄÊǷǾ۴ØË÷Òý£¬·Ç¾Û´ØË÷ÒýµÄÖ÷Ë÷ÒýºÍ¸¨ÖúË÷Òý¼¸ºõÊÇÒ»ÑùµÄ£¬Ö»ÊÇÖ÷Ë÷Òý²»ÔÊÐíÖØ¸´£¬²»ÔÊÐí¿ÕÖµ£¬ËûÃǵÄÒ¶×Ó½áµãµÄkey¶¼´æ´¢Ö¸Ïò¼üÖµ¶ÔÓ¦µÄÊý¾ÝµÄÎïÀíµØÖ·¡£
·Ç¾Û´ØË÷ÒýµÄÊý¾Ý±íºÍË÷Òý±íÊÇ·Ö¿ª´æ´¢µÄ¡£
·Ç¾Û´ØË÷ÒýÖеÄÊý¾ÝÊǸù¾ÝÊý¾ÝµÄ²åÈë˳Ðò±£´æ¡£Òò´Ë·Ç¾Û´ØË÷Òý¸üÊʺϵ¥¸öÊý¾ÝµÄ²éѯ¡£²åÈë˳Ðò²»ÊܼüÖµÓ°Ïì¡£
Ö»ÓÐÔÚMyISAMÖвÅÄÜʹÓÃFULLTEXTË÷Òý¡£(mysql5.6ÒÔºóinnoDBÒ²Ö§³ÖÈ«ÎÄË÷Òý)
*×ʼÎÒÒ»Ö±²»¶®¼ÈÈ»·Ç¾Û´ØË÷ÒýµÄÖ÷Ë÷ÒýºÍ¸¨ÖúË÷ÒýÖ¸ÏòÏàͬµÄÄÚÈÝ£¬ÎªÊ²Ã´»¹Òª¸¨ÖúË÷ÒýÕâ¸ö¶«Î÷ÄØ£¬ºóÀ´²ÅÃ÷°×Ë÷Òý²»¾ÍÊÇÓÃÀ´²éѯµÄÂð£¬ÓÃÔÚÄÇЩµØ·½ÄØ£¬²»¾ÍÊÇWHEREºÍORDER
BY Óï¾äºóÃæÂð£¬ÄÇôÈç¹û²éѯµÄÌõ¼þ²»ÊÇÖ÷¼üÔõô°ìÄØ£¬Õâ¸öʱºò¾ÍÐèÒª¸¨ÖúË÷ÒýÁË¡£
InnoDB¡ª¡ª¾Û´ØË÷Òý
¾Û´ØË÷ÒýµÄÖ÷Ë÷ÒýµÄÒ¶×Ó½áµã´æ´¢µÄÊǼüÖµ¶ÔÓ¦µÄÊý¾Ý±¾Éí£¬¸¨ÖúË÷ÒýµÄÒ¶×Ó½áµã´æ´¢µÄÊǼüÖµ¶ÔÓ¦µÄÊý¾ÝµÄÖ÷¼ü¼üÖµ¡£Òò´ËÖ÷¼üµÄÖµ³¤¶ÈԽСԽºÃ£¬ÀàÐÍÔ½¼òµ¥Ô½ºÃ¡£
¾Û´ØË÷ÒýµÄÊý¾ÝºÍÖ÷¼üË÷Òý´æ´¢ÔÚÒ»Æð¡£
¾Û´ØË÷ÒýµÄÊý¾ÝÊǸù¾ÝÖ÷¼üµÄ˳Ðò±£´æ¡£Òò´ËÊʺϰ´Ö÷¼üË÷ÒýµÄÇø¼ä²éÕÒ£¬¿ÉÒÔÓиüÉٵĴÅÅÌI/O£¬¼Ó¿ì²éѯËÙ¶È¡£µ«ÊÇÒ²ÊÇÒòΪÕâ¸öÔÒò£¬¾Û´ØË÷ÒýµÄ²åÈë˳Ðò×îºÃ°´ÕÕÖ÷¼üµ¥µ÷µÄ˳Ðò²åÈ룬·ñÔò»áƵ·±µÄÒýÆðÒ³·ÖÁÑ£¬ÑÏÖØÓ°ÏìÐÔÄÜ¡£
ÔÚInnoDBÖУ¬Èç¹ûÖ»ÐèÒª²éÕÒË÷ÒýµÄÁУ¬¾Í¾¡Á¿²»Òª¼ÓÈëÆäËüµÄÁУ¬ÕâÑù»áÌá¸ß²éѯЧÂÊ¡£
*ʹÓÃÖ÷Ë÷ÒýµÄʱºò£¬¸üÊʺÏʹÓþ۴ØË÷Òý£¬ÒòΪ¾Û´ØË÷ÒýÖ»ÐèÒª²éÕÒÒ»´Î£¬¶ø·Ç¾Û´ØË÷ÒýÔڲ鵽Êý¾ÝµÄµØÖ·ºó£¬»¹Òª½øÐÐÒ»´ÎI/O²éÕÒÊý¾Ý¡£
*ÒòΪ¾Û´Ø¸¨ÖúË÷Òý´æ´¢µÄÊÇÖ÷¼üµÄ¼üÖµ£¬Òò´Ë¿ÉÒÔÔÚÊý¾ÝÐÐÒÆ¶¯»òÕßÒ³·ÖÁѵÄʱºò½µµÍ³É±¾£¬ÒòΪÕâʱ²»ÓÃά»¤¸¨ÖúË÷Òý¡£µ«ÊÇÓÉÓÚÖ÷Ë÷Òý´æ´¢µÄÊÇÊý¾Ý±¾Éí£¬Òò´Ë¾Û´ØË÷Òý»áÕ¼Óøü¶àµÄ¿Õ¼ä¡£
*¾Û´ØË÷ÒýÔÚ²åÈëÐÂÊý¾ÝµÄʱºò±È·Ç¾Û´ØË÷ÒýÂýºÜ¶à£¬ÒòΪ²åÈëÐÂÊý¾ÝʱÐèÒª¼ì²âÖ÷¼üÊÇ·ñÖØ¸´£¬ÕâÐèÒª±éÀúÖ÷Ë÷ÒýµÄËùÓÐÒ¶½Úµã£¬¶ø·Ç¾Û´ØË÷ÒýµÄÒ¶½Úµã±£´æµÄÊÇÊý¾ÝµØÖ·£¬Õ¼ÓÿռäÉÙ£¬Òò´Ë·Ö²¼¼¯ÖУ¬²éѯµÄʱºòI/O¸üÉÙ£¬µ«¾Û´ØË÷ÒýµÄÖ÷Ë÷ÒýÖд洢µÄÊÇÊý¾Ý±¾Éí£¬Êý¾ÝÕ¼Óÿռä´ó£¬·Ö²¼·¶Î§¸ü´ó£¬¿ÉÄÜÕ¼ÓúöàµÄÉÈÇø£¬Òò´ËÐèÒª¸ü¶à´ÎI/O²ÅÄܱéÀúÍê±Ï¡£
ÏÂͼ¿ÉÒÔÐÎÏóµÄ˵Ã÷¾Û´ØË÷ÒýºÍ·Ç¾Û´ØË÷ÒýµÄÇø±ð

´ÓÉÏͼÖпÉÒÔ¿´µ½¾Û´ØË÷ÒýµÄ¸¨ÖúË÷ÒýµÄÒ¶×Ó½ÚµãµÄdata´æ´¢µÄÊÇÖ÷¼üµÄÖµ£¬Ö÷Ë÷ÒýµÄÒ¶×Ó½ÚµãµÄdata´æ´¢µÄÊÇÊý¾Ý±¾Éí£¬Ò²¾ÍÊÇ˵Êý¾ÝºÍË÷Òý´æ´¢ÔÚÒ»Æð£¬²¢ÇÒË÷Òý²éѯµ½µÄµØ·½¾ÍÊÇÊý¾Ý£¨data£©±¾Éí£¬ÄÇôË÷ÒýµÄ˳ÐòºÍÊý¾Ý±¾ÉíµÄ˳Ðò¾ÍÊÇÏàͬµÄ£»
¶ø·Ç¾Û´ØË÷ÒýµÄÖ÷Ë÷ÒýºÍ¸¨ÖúË÷ÒýµÄÒ¶×Ó½ÚµãµÄdata¶¼ÊÇ´æ´¢µÄÊý¾ÝµÄÎïÀíµØÖ·£¬Ò²¾ÍÊÇ˵Ë÷ÒýºÍÊý¾Ý²¢²»ÊÇ´æ´¢ÔÚÒ»ÆðµÄ£¬Êý¾ÝµÄ˳ÐòºÍË÷ÒýµÄ˳Ðò²¢Ã»ÓÐÈκιØÏµ£¬Ò²¾ÍÊÇË÷Òý˳ÐòÓëÊý¾ÝÎïÀíÅÅÁÐ˳ÐòÎ޹ء£
´ËÍâMyISAMºÍinnoDBµÄÇø±ð×ܽáÈçÏ£º

×ܽáÈçÏ£º
InnoDB Ö§³ÖÊÂÎñ£¬Ö§³ÖÐм¶±ðËø¶¨£¬Ö§³Ö B-tree¡¢Full-text µÈË÷Òý£¬²»Ö§³Ö Hash
Ë÷Òý£»
MyISAM ²»Ö§³ÖÊÂÎñ£¬Ö§³Ö±í¼¶±ðËø¶¨£¬Ö§³Ö B-tree¡¢Full-text µÈË÷Òý£¬²»Ö§³Ö Hash
Ë÷Òý£»
´ËÍ⣬Memory ²»Ö§³ÖÊÂÎñ£¬Ö§³Ö±í¼¶±ðËø¶¨£¬Ö§³Ö B-tree¡¢Hash µÈË÷Òý£¬²»Ö§³Ö Full-text
Ë÷Òý£»
¸ü¶àMyISAMºÍinnoDBµÄÇø±ð¾ßÌåÄÚÈݲο¼£ºMyISAMheinnoDBµÄÇø±ð£¬°üÀ¨Ðм¶ËøËÀËøµÄ¾ßÌå·ÖÎö
Îå¡¢Ë÷ÒýµÄʹÓòßÂÔ
ʲôʱºòҪʹÓÃË÷Òý£¿
Ö÷¼ü×Ô¶¯½¨Á¢Î¨Ò»Ë÷Òý£»
¾³£×÷Ϊ²éѯÌõ¼þÔÚWHERE»òÕßORDER BY Óï¾äÖгöÏÖµÄÁÐÒª½¨Á¢Ë÷Òý£»
×÷ΪÅÅÐòµÄÁÐÒª½¨Á¢Ë÷Òý£»
²éѯÖÐÓëÆäËû±í¹ØÁªµÄ×ֶΣ¬Íâ¼ü¹ØÏµ½¨Á¢Ë÷Òý
¸ß²¢·¢Ìõ¼þÏÂÇãÏò×éºÏË÷Òý£»
ÓÃÓھۺϺ¯ÊýµÄÁпÉÒÔ½¨Á¢Ë÷Òý£¬ÀýÈçʹÓÃÁËmax(column_1)»òÕßcount(column_1)ʱµÄcolumn_1¾ÍÐèÒª½¨Á¢Ë÷Òý
ʲôʱºò²»ÒªÊ¹ÓÃË÷Òý£¿
¾³£Ôöɾ¸ÄµÄÁв»Òª½¨Á¢Ë÷Òý£»
ÓдóÁ¿Öظ´µÄÁв»½¨Á¢Ë÷Òý£»
±í¼Ç¼̫ÉÙ²»Òª½¨Á¢Ë÷Òý¡£Ö»Óе±Êý¾Ý¿âÀïÒѾÓÐÁË×ã¹»¶àµÄ²âÊÔÊý¾Ýʱ£¬ËüµÄÐÔÄܲâÊÔ½á¹û²ÅÓÐʵ¼Ê²Î¿¼¼ÛÖµ¡£Èç¹ûÔÚ²âÊÔÊý¾Ý¿âÀïÖ»Óм¸°ÙÌõÊý¾Ý¼Ç¼£¬ËüÃÇÍùÍùÔÚÖ´ÐÐÍêµÚÒ»Ìõ²éѯÃüÁîÖ®ºó¾Í±»È«²¿¼ÓÔØµ½ÄÚ´æÀÕ⽫ʹºóÐøµÄ²éѯÃüÁî¶¼Ö´Ðе÷dz£¿ì--²»¹ÜÓÐûÓÐʹÓÃË÷Òý¡£Ö»Óе±Êý¾Ý¿âÀïµÄ¼Ç¼³¬¹ýÁË1000Ìõ¡¢Êý¾Ý×ÜÁ¿Ò²³¬¹ýÁËMySQL·þÎñÆ÷ÉϵÄÄÚ´æ×ÜÁ¿Ê±£¬Êý¾Ý¿âµÄÐÔÄܲâÊÔ½á¹û²ÅÓÐÒâÒå¡£
Ë÷ÒýʧЧµÄÇé¿ö£º
ÔÚ×éºÏË÷ÒýÖв»ÄÜÓÐÁеÄֵΪNULL£¬Èç¹ûÓУ¬ÄÇôÕâÒ»ÁжÔ×éºÏË÷Òý¾ÍÊÇÎÞЧµÄ¡£
ÔÚÒ»¸öSELECTÓï¾äÖУ¬Ë÷ÒýÖ»ÄÜʹÓÃÒ»´Î£¬Èç¹ûÔÚWHEREÖÐʹÓÃÁË£¬ÄÇôÔÚORDER BYÖоͲ»ÒªÓÃÁË¡£
LIKE²Ù×÷ÖУ¬'%aaa%'²»»áʹÓÃË÷Òý£¬Ò²¾ÍÊÇË÷Òý»áʧЧ£¬µ«ÊÇ¡®aaa%¡¯¿ÉÒÔʹÓÃË÷Òý¡£
ÔÚË÷ÒýµÄÁÐÉÏʹÓñí´ïʽ»òÕߺ¯Êý»áʹË÷ÒýʧЧ£¬ÀýÈ磺select * from users where
YEAR(adddate)<2007£¬½«ÔÚÿ¸öÐÐÉϽøÐÐÔËË㣬Õ⽫µ¼ÖÂË÷ÒýʧЧ¶ø½øÐÐÈ«±íɨÃ裬Òò´ËÎÒÃÇ¿ÉÒԸijɣºselect
* from users where adddate<¡¯2007-01-01¡ä¡£ÆäËüͨÅä·ûͬÑù£¬Ò²¾ÍÊÇ˵£¬ÔÚ²éѯÌõ¼þÖÐʹÓÃÕýÔò±í´ïʽʱ£¬Ö»ÓÐÔÚËÑË÷Ä£°åµÄµÚÒ»¸ö×Ö·û²»ÊÇͨÅä·ûµÄÇé¿öϲÅÄÜʹÓÃË÷Òý¡£
ÔÚ²éѯÌõ¼þÖÐʹÓò»µÈÓÚ£¬°üÀ¨<·ûºÅ¡¢>·ûºÅºÍ£¡=»áµ¼ÖÂË÷ÒýʧЧ¡£ÌرðµÄÊÇÈç¹û¶ÔÖ÷¼üË÷ÒýʹÓã¡=Ôò²»»áʹË÷ÒýʧЧ£¬Èç¹û¶ÔÖ÷¼üË÷Òý»òÕßÕûÊýÀàÐ͵ÄË÷ÒýʹÓÃ<·ûºÅ»òÕß>·ûºÅ²»»áʹË÷ÒýʧЧ¡££¨¾erwkjrfhjwkdbͬѧÌáÐÑ£¬²»µÈÓÚ£¬°üÀ¨<·ûºÅ¡¢>·ûºÅºÍ£¡£¬Èç¹ûÕ¼×ܼǼµÄ±ÈÀýºÜСµÄ»°£¬Ò²²»»áʧЧ£©
ÔÚ²éѯÌõ¼þÖÐʹÓÃIS NULL»òÕßIS NOT NULL»áµ¼ÖÂË÷ÒýʧЧ¡£
×Ö·û´®²»¼Óµ¥ÒýºÅ»áµ¼ÖÂË÷ÒýʧЧ¡£¸ü׼ȷµÄ˵ÊÇÀàÐͲ»Ò»Ö»ᵼÖÂʧЧ£¬±ÈÈç×Ö¶ÎemailÊÇ×Ö·û´®ÀàÐ͵ģ¬Ê¹ÓÃWHERE
email=99999 Ôò»áµ¼ÖÂʧ°Ü£¬Ó¦¸Ã¸ÄΪWHERE email='99999'¡£
ÔÚ²éѯÌõ¼þÖÐʹÓÃORÁ¬½Ó¶à¸öÌõ¼þ»áµ¼ÖÂË÷ÒýʧЧ£¬³ý·ÇORÁ´½ÓµÄÿ¸öÌõ¼þ¶¼¼ÓÉÏË÷Òý£¬ÕâʱӦ¸Ã¸ÄΪÁ½´Î²éѯ£¬È»ºóÓÃUNION
ALLÁ¬½ÓÆðÀ´¡£
Èç¹ûÅÅÐòµÄ×Ö¶ÎʹÓÃÁËË÷Òý£¬ÄÇôselectµÄ×Ö¶ÎÒ²ÒªÊÇË÷Òý×ֶΣ¬·ñÔòË÷ÒýʧЧ¡£ÌرðµÄÊÇÈç¹ûÅÅÐòµÄÊÇÖ÷¼üË÷ÒýÔòselect
* Ò²²»»áµ¼ÖÂË÷ÒýʧЧ¡£
¾¡Á¿²»Òª°üÀ¨¶àÁÐÅÅÐò£¬Èç¹ûÒ»¶¨Òª£¬×îºÃΪÕâ¶ÓÁй¹½¨×éºÏË÷Òý£»
Áù¡¢Ë÷ÒýµÄÓÅ»¯
1¡¢×î×óǰ׺
Ë÷ÒýµÄ×î×óǰ׺ºÍºÍB+TreeÖеġ°×î×óǰ׺ÔÀí¡±Óйأ¬¾ÙÀýÀ´Ëµ¾ÍÊÇÈç¹ûÉèÖÃÁË×éºÏË÷Òý<col1,col2,col3>ÄÇôÒÔÏÂ3ÖÐÇé¿ö¿ÉÒÔʹÓÃË÷Òý£ºcol1£¬<col1,col2>£¬<col1,col2,col3>£¬ÆäËüµÄÁУ¬±ÈÈç<col2,col3>£¬<col1,col3>£¬col2£¬col3µÈµÈ¶¼ÊDz»ÄÜʹÓÃË÷ÒýµÄ¡£
¸ù¾Ý×î×óǰ׺ÔÔò£¬ÎÒÃÇÒ»°ã°ÑÅÅÐò·Ö×鯵ÂÊ×î¸ßµÄÁзÅÔÚ×î×ó±ß£¬ÒÔ´ËÀàÍÆ¡£
2¡¢´øË÷ÒýµÄÄ£ºý²éѯÓÅ»¯
ÔÚÉÏÃæÒѾÌáµ½£¬Ê¹ÓÃLIKE½øÐÐÄ£ºý²éѯµÄʱºò£¬'%aaa%'²»»áʹÓÃË÷Òý£¬Ò²¾ÍÊÇË÷Òý»áʧЧ¡£Èç¹ûÊÇÕâÖÖÇé¿ö£¬Ö»ÄÜʹÓÃÈ«ÎÄË÷ÒýÀ´½øÐÐÓÅ»¯£¨ÉÏÎÄÓн²µ½£©¡£
3¡¢Îª¼ìË÷µÄÌõ¼þ¹¹½¨È«ÎÄË÷Òý£¬È»ºóʹÓÃ
SELECT * FROM
tablename MATCH(index_colum) ANGAINST(¡®word¡¯); |
4¡¢Ê¹ÓöÌË÷Òý
¶Ô´®ÁнøÐÐË÷Òý£¬Èç¹û¿ÉÄÜÓ¦¸ÃÖ¸¶¨Ò»¸öǰ׺³¤¶È¡£ÀýÈ磬Èç¹ûÓÐÒ»¸öCHAR(255)µÄ ÁУ¬Èç¹ûÔÚǰ10
¸ö»ò20 ¸ö×Ö·ûÄÚ£¬¶àÊýÖµÊÇΩһµÄ£¬ÄÇô¾Í²»Òª¶ÔÕû¸öÁнøÐÐË÷Òý¡£¶ÌË÷Òý²»½ö¿ÉÒÔÌá¸ß²éѯËٶȶøÇÒ¿ÉÒÔ½ÚÊ¡´ÅÅ̿ռäºÍI/O²Ù×÷¡£
|