標籤:
一、索引是什嗎?
比如我們要在字典中找某一字,如何才能快速找到呢?那就是通過字典的目錄。
對資料庫來說,索引的作用就是給‘資料’加目錄。
二、索引演算法
設有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之索引