mysql索引如何使用

mysql索引的使用方法:【alter table table_name add index 索引名(column)】,表示添加普通索引。mysql索引的目的在于提高查詢效率。

mysql索引如何使用

mysql索引的目的在于提高查詢效率,可以類比字典,如果要查“mysql”這個(gè)單詞,我們肯定需要定位到m字母,然后從下往下找到y(tǒng)字母,再找到剩下的sql。如果沒有索引,那么你可能需要把所有單詞看一遍才能找到你想要的。?

(推薦教程:mysql視頻教程

在創(chuàng)建索引時(shí),需要考慮哪些列會用于 SQL 查詢,然后為這些列創(chuàng)建一個(gè)或多個(gè)索引。事實(shí)上,索引也是一種表,保存著主鍵或索引字段,以及一個(gè)能將每個(gè)記錄指向?qū)嶋H表的指針數(shù)據(jù)庫用戶是看不到索引的,它們只是用來加速查詢的。數(shù)據(jù)庫搜索引擎使用索引來快速定位記錄。

mysql有四種索引(主鍵索引/普通索引/全文索引/唯一索引)

1.索引的添加?

1.1主鍵索引的添加

當(dāng)一張表,把某個(gè)列設(shè)為主鍵的時(shí)候,則該列就是主鍵索引

create?table?a(?? id?int?primary?key?auto_increment,?? name?varchar(20)?not?NULL?default?''?? );?? //這里id就是表的主鍵

如果當(dāng)創(chuàng)建表時(shí)沒有指定主鍵索引,也可以在創(chuàng)建表之后添加:

alter?table?table_name?add?primary?key?(column?name);

1.2普通索引

普通索引一般是在建表后再添加的,

create?index?索引名?on?table_name(column1,column2); alter?table?table_name?add?index?索引名(column1,column2);

1.3全文索引

首先,全文索引主要針對文本文件,比如文章,標(biāo)題,全文索引只有MyISAM有效(mysql5.6之后InnoDB也支持了全文索引)

create?table?c(?? id?int?primary?key?auto_increment?,?? title?varchar(20),?? content?text,?? fulltext(title,content)?? )engine=myisam?charset?utf8;?? ?? insert?into?c(title,content)?values?? ????('MySQL?Tutorial','DBMS?stands?for?DataBase?...'),?? ????('How?To?Use?MySQL?Well','After?you?went?through?a?...'),?? ????('Optimizing?MySQL','In?this?tutorial?we?will?show?...'),?? ????('1001?MySQL?Tricks','1.?Never?run?mysqld?as?root.?2.?...'),?? ????('MySQL?vs.?YourSQL','In?the?following?database?comparison?...'),?? ????('MySQL?Security','When?configured?properly,?MySQL?...');

使用全文索引常見的錯(cuò)誤:

select?*?from?c?where?content?like?"%mysql%";

這里并不會使用全文索引,可以用explain進(jìn)行查看。正確用法:

select?*??from?c?where?match(title,content)?against?('MYSQL');

備注:

1.? 在mysql中fulltext 索引只針對 myisam生效

2.? mysql自己提供的fulltext針對英文生效->sphinx(coreseek)技術(shù)處理中文

3.? 使用方法是 match(字段名..) against(‘關(guān)鍵字’)

1.4唯一索引

create?table?d(id?int?primary?key?auto_increment?,?name?varchar(32)?unique)

d表中name就是唯一索引,唯一索引可以有多個(gè)null,不能是重復(fù)的內(nèi)容

相比主鍵索引,主鍵字段不能為null,也不能重復(fù)

2. 查詢索引

show?indexes?from?table_name; show?keys?from?table_name;

3.刪除索引

alter?table?table_name?drop?index?索引名;

以上就是

? 版權(quán)聲明
THE END
喜歡就支持一下吧
點(diǎn)贊10 分享