1. 程式人生 > >索引演算法——空間資料索引、全文索引

索引演算法——空間資料索引、全文索引


空間資料索引(R-Tree)

MyISAM表支援空間索引,可以用作地理資料儲存。和B-Tree索引不同,這類索引無須字首查詢。空間索引會從所有維度來索引資料。查詢時,  可以有效地使用任意維度來組合查詢。必須使用MySQL的GIS相關函式如MBRCONTAINS()等來維護資料。MySQL的GIS支援並不完善,所以大部分人都不會使用這個特性。開源關係資料庫系統中對GIS的解決方案做得比較好的是PostgreSQL的PostGIS。


      全文索引

      全文索引是一種特殊型別的索引,它查詢的是文字中的關鍵詞,  而不是直接比較索引中的值。  全文搜尋和其他幾類索引的匹配方式完全不一樣。  它有許多需要注意的細節,如停用詞、詞千和複數、布林搜尋等。全文索引更類似於搜尋引擎做的事情,而不是簡單的WHERE條件匹配。

      在相同的列,上同時建立全文索引和基於值的B-Tree索引不會有衝突,全文索引適用於MATCH AGAINST 操作,而不是普通的WHERE條件操作。
(稍後會寫一篇文章專門講全文索引)

      其他索引類別

      還有很多第三方的儲存引擎使用不同型別的資料結構來儲存索引。例如TokuDB使用分形樹索引(fractal tree index),這是一一類較新開發的資料結構,既有B-Tree的很多優點,也避免了B-Tree 的一一些缺點。如果通讀完本章,可以看到很多關於InnoDB的主題,包括聚簇索引、覆蓋索引等。多數情況下,針對InnoDB的討論也都適用於TokuDB。

ScaleDB使用Patricia tries  (這個詞不是拼寫錯誤),其他一些儲存引擎技術如InfiniDB和Infobright則使用了一些特殊的資料結構來優化某些特殊的查詢。