MySQL是一種流行的關系型數(shù)據(jù)庫,索引是提高查詢性能的重要手段。不同的索引種類適用于不同的查詢場景。
1. B-Tree索引
B-Tree索引是MySQL中最常見的索引類型。它適用于基于范圍的查詢,如大于、小于、范圍和排序。B-Tree索引維護了一個和表一起存儲的樹結構,可以很快實現(xiàn)二分查找,時間復雜度O(logN)。
CREATE TABLE student ( id INT PRIMARY KEY, name VARCHAR(50), age INT, INDEX idx_age(age) );
2. 哈希索引
哈希索引適用于等值查詢,如等于號(=)查詢。它通過對索引列的哈希值進行散列處理,將結果映射到存儲地址中。哈希索引的查詢速度非常快,時間復雜度O(1),但是不能用于范圍查詢。
CREATE TABLE student ( id INT PRIMARY KEY, name VARCHAR(50), age INT, INDEX idx_age(age) USING HASH );
3. 全文索引
全文索引適用于文本字段的模糊查找,如LIKE查詢。它通過將文本分詞后建立索引,可以快速地搜索含有特定關鍵詞的文本。
CREATE TABLE student ( id INT PRIMARY KEY, name VARCHAR(50), description TEXT, FULLTEXT INDEX idx_desc(description) );
4. 空間索引
空間索引適用于地理位置數(shù)據(jù)的查詢,如附近的人、附近的店鋪等。它將地理坐標映射到二維平面上,并支持計算距離、包含等空間操作。
CREATE TABLE store ( id INT PRIMARY KEY, name VARCHAR(50), location POINT, SPATIAL INDEX idx_location(location) );