2015年3月4日 星期三

MySQL的INDEX、PRIMARY、UNIQUE、FULLTEXT 索引差異

先來說明MySQL的Index和Key有什麼差異
沒有差異。他們是同義詞

INDEX(or KEY) - 指一般的非唯一索引。所以該索引可以允許有相同值。索引不執行限制你的數據,他們僅用於加速查詢
UNIQUE - 和index相同,差異在於不能允許重複值,可以為空(只能有一個空值)。但根據你的應用程式,這可能造成不快,如果想避免這狀況,你應該在相關欄位不允許NULL
PRIMARY - 與UNIQUE相似,但一個表只有一個主鍵(雖然有些資料庫系統不強制如此)。PRIMARY索引是主要手段去識別表中的資料,不允許NULL值。通常是自動增加(Auto-incremented)的數字
FULLTEXT - 行為與上面不同。僅用於"全文搜索"( 只能用在「CHAR」、「VARCHAR」與「TEXT」型態的欄位 )。不像上面三個使用B-TREEHash表實做。

相同點
上面的索引都能使用多個欄位( SuperKey、超級索引鍵、複合鍵 )
除了FULLTEXT,欄位在排序時效果是顯著的

查indexes設定
mysql> show indexes from [TABLE];

參考資料:
http://stackoverflow.com/questions/707874/differences-between-index-primary-unique-fulltext-in-mysql  Differences between INDEX, PRIMARY, UNIQUE, FULLTEXT in MySQL?
http://stackoverflow.com/questions/1401572/what-are-differences-between-index-v-s-key-in-mysql  What are differences between Index v.s. Key in MySQL

沒有留言:

張貼留言