mysql索引的用途:
保持數據的完整性;
優化數據的訪問性能
改進表的鏈接(join)操作
對結果進行排序
簡化聚合數據操作
索引的數據結構:B-、B+、R-、散列
散列實現對直接查找方式能提供最優的性能,但對一定范圍的查找卻效率底下。
B-樹索引實現是一個專門為范圍查詢設計的。
B-樹:
B-樹結構支持插入、控制操作以及通過管理一系列樹根狀結構的彼此聯通的節點中來做選擇。B-樹結構中有兩種節點類型:索引節點和葉子節點。葉子節點是存儲數據的,而索引節點是用來告訴用戶存儲在葉子節點中的數據的順序,並幫助用戶找到數據。B-樹不是二叉樹,二叉樹只是一種簡單的節點層次結構的實現。有關B-樹的數據結構概念、數學證明以及技術描述的信息參見:http://en.wikipedia.org/wiki/Btree.

B+樹
B+樹是B-樹結構的增強版,盡管B+樹支持B-樹的所有特性,他們之間最顯著的不同點在於B+樹中底層數據是按照提及的索引列進行排序的。B+樹還通過在葉子節點之間附加引用來優化掃描的性能。http://en.wikipedia.org/wiki/B%2B_tree
散列
散列表數據結構是一個簡單的概念,他將一種算法應用到給定值中以在底層數據存儲系統中返回一個唯一的指針或位置。散列表的優點是始終以線性時間復雜度找到需要讀取的行的位置,而不想B-樹那樣需要跨越多層節點來確定位置。
http://en.wikipedia.org/wiki/Hash_table

通信R-樹
R-樹數據結構支持基於數據類型對集合數據進行管理。目前只有MyIsam使用R-樹支持空間索引。使用空間索引也有很多限制,比如只支持唯一的NOT NULL 列等。空間索引並不常用。http://en.wikipedia.org/wiki/R-tree。
