mysql的优化——索引介绍
生活随笔
收集整理的這篇文章主要介紹了
mysql的优化——索引介绍
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
后綴為:? .MYD? 是MyISAM存儲引擎的存儲的數(shù)據(jù)文件
后綴為:? .MYI? ? 是MyISAM存儲引擎的存儲的索引文件
注:現(xiàn)在都很少使用MyISAM作為存儲引擎了。現(xiàn)在大多采用InnoDB作為存儲引擎
聚集索引(聚簇索引):索引和數(shù)據(jù)要全部放在一起。(葉子節(jié)點包含了完整的數(shù)據(jù)記錄)
?
MyISAM就沒有聚集索引。索引和數(shù)據(jù)是分開的,通過物理地址作為中間人,進行兩者的聯(lián)系
1.為什么InnoDB表主鍵要使用整型呢?
因為在進行查找某個元素的時候,需要對其索引進行比大小,而整型的索引比大小是最好的,效率很高。
字符串的索引比大小,是把字符串的每個字符逐個轉(zhuǎn)化成整型進行逐個比大小,會進行很多次比較,效率較低。
2.為什么InnoDB表要使用自增的主鍵呢?
注:為什么大多數(shù)的時候都是采用B+樹作為索引方法,而不采用hash作為索引方法呢?
? ? ? ?hash查找定位很快,效率很高。但是如下圖:
使用hash作為索引方法,不能進行范圍查找。
而b+樹的存儲結(jié)構(gòu)是如下圖的:
如果要查找索引>20的元素,先定位到索引20的元素位置,再通過指針,順藤摸瓜,把后面的元素全部獲取出來。
如果要查找索引<20的元素,先定位到索引20的元素位置,再通過指針,順藤摸瓜,把前面的元素全部獲取出來。
因為b+樹在葉子節(jié)點那里,是一個雙向鏈表的結(jié)構(gòu)。(雙向鏈表的具體用法:范圍查找)
注:b+樹比起b樹來說的,進行了葉子節(jié)點處,采用雙向鏈表的結(jié)構(gòu),同時非葉子節(jié)點沒有數(shù)據(jù),減少了冗余。
所以:不建議使用UUID(字符串)。UUID既不自增也不是整型。 但是做數(shù)據(jù)表的遷移,用UUID會更好一點。
總結(jié)
以上是生活随笔為你收集整理的mysql的优化——索引介绍的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: NIO网络编程应用实例——群聊系统
- 下一篇: Move from SQL to SOQ