自己查詢資料做了各類總結,如下:
一、MYSQL中的普通索引,主健,唯一,全文索引區別
PRIMARY 主鍵。 就是 唯一 且 不能爲空。
INDEX 索引,普通的
UNIQUE 唯一索引。 不允許有重複。
FULLTEXT 是全文索引,用於在一篇文章中,檢索文本信息的。
二、EXPLAIN SELECT命令
EXPLAIN命令的輸出結果裏,第1列是從數據庫讀取的數據表的名字,它們按被讀取的先後順序排列。
type列指定了本數據表與其它數據表之間的關聯關係(JOIN)。在各種類型的關聯關係當中,效率最高的是system,然後依次是const、eq_ref、ref、range、index和All(All的意思是:對應於上一級數據表裏的每一條記錄,這個數據表裏的所有記錄都必須被讀取一遍--這種情況往往可以用一索引來避免)。
possible_keys數據列給出了MySQL在搜索數據記錄時可選用的各個索引。
key數據列是MySQL實際選用的索引,這個索引按字節計算的長度在key_len數據列裏給出。比如說,對於一個INTEGER數據列的索引,這個字節長度將是4。如果用到了複合索引,在key_len數據列裏還可以看到MySQL具體使用了它的哪些部分。作爲一般規律,key_len數據列裏的值越小越好(意思是更快)。
ref數據列給出了關聯關係中另一個數據表裏的數據列的名字。row數據列是MySQL在執行這個查詢時預計會從這個數據表裏讀出的數據行的個數。
row數據列裏的所有數字的乘積可以讓我們大致瞭解這個查詢需要處理多少組合。
三、性能
show INDEX FROM tableName;
index_type可以看出索引類型是BTREE(二叉樹),正是因爲這個二叉樹算法,讓查詢速度快很多,二叉樹的原理,就是取最中間的一個數,然後把大於這個數的往右邊排,小於這個數的就向左排,每次減半,然後依次類推,每次減半,形成一個樹狀結構圖