Mysql高級之索引

索引:是針對數據所建立的目錄.

作用:?可以加快查詢速度

負面影響:?降低了增刪改的速度.

索引的創建原則:

1:不要過度索引

2:在where條件最頻繁的列上加.在重復度高的列上不加,比如性別男女;

3:盡量索引散列值,過于集中的值加索引意義不大.

?

索引的類型

普通索引:?index?僅僅是加快查詢速度.

唯一索引:?unique?index?行上的值不能重復

主鍵索引:?primary?key?不能重復.

主鍵必唯一,但是唯一索引不一定是主鍵.

一張表上,只能有一個主鍵,?但是可以用一個或多個唯一索引.

全文索引?:?fulltext?index?在mysql的默認情況下,?對于中文意義不大.一般使用第三方解決方案

因為英文有空格,標點符號來拆成單詞,進而對單詞進行索引.

而對于中文,沒有空格來隔開單詞,mysql無法識別每個中文詞.

(上述3種索引,都是針對列的值發揮作用,但全文索引,可以針對值中的某個單詞,比如一篇文章,)全文索引不針對非常頻繁的詞做索引,如this,?is,?you,?my等等.

索引長度:指定一列部分內容作為索引

多列索引:兩列或多列值看做整體,當做索引。在英文網站時,first?name,last?name當做一個整體,此時,where條件中只有first?name可以發揮作用,last?name?沒有發揮作用,這就是作為的左前綴規則。

冗余索引:某列有多個索引,例如在上面last?name上再次建立索引。

Mysql高級之索引

Mysql高級之索引

建立索引

可以在建表時,直接聲明索引,即在列聲明完畢后,聲明索引.

例如下:

?create?table?test5?(

?id?int,

?username?varchar(20),

?school?varchar(20),

?intro?text,

?primary?key?(id),

?unique?(username),

?index?(school),

?fulltext?(intro)

?)?engine?myisam?charset?utf8;

?

查看一張表上所有索引

Show?index?from?表名

?

建立索引

Alter?table?表名?add?index?/unique/fulltext?[索引名]?(列名)

Alter?table?表名??add?primary?key?(列名)???//?不要加索引名,因為主鍵只有一個

?

刪除添加索引

刪除非主鍵索引:Alter?table?表名?drop/add?index?索引名;

刪除主鍵:?alter?table?表名?drop/add??primary?key

? 版權聲明
THE END
喜歡就支持一下吧
點贊6 分享