mysql之索引

來源:互聯網
上載者:User

標籤:

一、索引是什嗎?

比如我們要在字典中找某一字,如何才能快速找到呢?那就是通過字典的目錄。

對資料庫來說,索引的作用就是給‘資料’加目錄。  

 

二、索引演算法

設有N條隨機記錄,不用索引,平均尋找N/2次,那麼用了索引之後呢?

tree(二叉樹)索引    log2N

hash(雜湊)索引  1

 

三、優缺點

優點:加快了查詢的速度(select)

缺點:降低了增刪改的速度(update/delete/insert)

        增加了表的檔案大小(索引檔案甚至可能比資料檔案還大)

 

四、索引的使用原則

不過得使用索引;

索引條件列(where後面最頻繁的條件比較適宜索引)

索引散列值,過於集中的值不要索引

例如:給性別列 ’男‘,’女‘加索引,意義不大

 

五、索引類型

1.普通索引:僅僅是加快了查詢速度

2.唯一索引:行上的值不能重複

3.主鍵索引:不能重複

主鍵索引和唯一索引的區別:主鍵必唯一,但是唯一索引不一定是主鍵;

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

4.全文索引:fulltext index

 

六、查看某張表上的所有索引

show index from tableName [\G,如果是在cmd視窗,可以換行];

 

七、建立索引

alter table 表名 add index/unique/fulltext [索引名](列名) ;  ---索引名可不寫,不寫預設使用列名

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

 

八、刪除索引

刪除非主鍵索引

alter table 表名 drop index 索引名;

刪除主鍵索引:

alter table 表名 drop primary key;

 

九、案例

設有一張新聞表 15列,10列上有索引,共500w行資料,如何快速匯入?

1.把空表的索引全部刪除

2.匯入資料

3.資料匯入完畢後,集中建索引

 

十、全文索引與停止詞

全文索引的用法:

match(全文索引名) against(‘keyword‘);

 

關於全文索引的停止詞:

全文索引不針對非常頻繁的詞做索引

如:this,is,you,my等等

 

全文索引在mysql的預設情況下,對於中文意義不大。

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

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

可以使用sphinx外掛程式來進行全文索引的中文索引。

mysql之索引

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.