天天看點

Mysql學習筆記(八)索引

PS:把昨天的學習内容補上...發一下昨天學的東西....五月三日。。。繼續學習資料庫...

學習内容:

索引....

索引的優點:

1.通過建立唯一索引,可以保證資料庫每行資料的唯一性...

2.使查找的速度明顯加快...

3.當使用分組和排序進行查詢時,可以縮短時間...  

索引的缺點:

1.維護索引需要耗費資料庫的資源...

2.索引需要占用磁盤空間...

3.對表進行增删改的時候,由于索引的存在,時間會有所增加...

索引的分類...

普通索引和唯一索引...

普通索引和唯一索引大緻相同,都是屬于b-tree結構....唯一不同點就是唯一索引的資料列可以為空,并且每一行的索引列的資料唯一...

單列索引和複合索引...

單列索引就是定義一個索引的參數是唯一一個,複合索引就是定義索引的時候包含的參數可以是多個...并且複合索引的查詢必須要使用第一個字段,否則會産生不走索引的情況...原因是複合索引遵循最左字首集合...

全文索引

全文索引就是定義索引的列上支援值的全文查找,允許在這個列上插入重複值和空值,全文索引可以在字元或者文本上進行定義...存儲引擎為Myisam...

空間索引

空間索引必須在myisam表進行建立...是對空間的資料類型的字段建立的索引..空間資料類型有四種geometry,point,linestring,polygon...空間索引使用關鍵字spatial進行擴充...(說實話,我也不完全清楚空間索引到底能用在什麼地方)...

建立索引的語句....

普通索引:

顯示資料會有很多的屬性..簡單的介紹一下...

id:第幾個..select_type:表示查詢語句select的複雜程度..table:表格名稱...type:通路類型..possible_key:顯示索引...key:索引的個數...

key_len:顯示使用索引的位元組數...ref:顯示哪個列被用于索引查找...rows:找到索引所要讀取的行數...extra:表示不适合在列中顯示,但是又很重要的額外資訊...

唯一索引:

唯一索引列的索引值必須唯一,如果是複合索引,複合索引的列組合的值也必須唯一...

使用explain查詢語句...

全文索引...

Fulltext索引可以用于全文索引...隻有myisam存儲引擎支援全文索引..全文索引不支援過濾索引..

空間索引:空間索引,用于地理空間類型...自己弄得也不是很明白...是以在這裡不進行介紹,避免誤人子弟...

在已有的表中去加入索引....

兩種方式:

删除索引:

注意:anto_increment 限制字段的唯一索引是不允許被删除的....

無論是添加了索引還是删除了索引,我們都可以使用shou create table table_name來檢視資料表建立的情況....