索引 : 是針對數(shù)據(jù)所建立的目錄 .
作用 :? 可以加快查詢速度
負面影響 :? 降低了增刪改的速度 .
索引的創(chuàng)建原則 :
1: 不要過度索引
2: 在 where 條件最頻繁的列上加 . 在重復度高的列上不加,比如性別男女;
3: 盡量索引散列值 , 過于集中的值加索引意義不大 .
?
索引的類型
普通索引 : ?index? 僅僅是加快查詢速度 .
唯一索引 :?unique?index? 行上的值不能重復
主鍵索引 :?primary?key? 不能重復 .
主鍵必唯一 , 但是唯一索引不一定是主鍵 .
一張表上 , 只能有一個主鍵 ,? 但是可以用一個或多個唯一索引 .
全文索引 ?:?fulltext?index? 在 mysql 的默認情況下 ,? 對于中文意義不大 . 一般使用第三方解決方案
因為英文有空格, 標點符號來拆成單詞 , 進而對單詞進行索引 .
而對于中文, 沒有空格來隔開單詞 ,mysql 無法識別每個中文詞 .
( 上述 3 種索引 , 都是針對列的值發(fā)揮作用 , 但全文索引 , 可以針對值中的某個單詞 , 比如一篇文章 ,) 全文索引不針對非常頻繁的詞做索引 , 如 this,?is,?you,?my 等等 .
索引長度 :指定一列部分內(nèi)容作為索引
多列索引 :兩列或多列值看做整體,當做索引。在英文網(wǎng)站時, first?name , last?name 當做一個整體,此時, where 條件中只有 first?name 可以發(fā)揮作用, last?name? 沒有發(fā)揮作用,這就是作為的左前綴規(guī)則。
冗余索引 :某列有多個索引,例如在上面 last?name 上再次建立索引。
建立索引
可以在建表時 , 直接聲明索引 , 即在列聲明完畢后 , 聲明索引 .
例如下 :
?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
更多文章、技術交流、商務合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯(lián)系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
