數據庫開發中索引的使用占了很重要的位置,好的索引會使數據庫的讀寫效率加倍,爛的索引則會拖累整個系統甚至引發災難。
索引分三類:
index ----普通的索引,數據可以重復
unique ----唯一索引,唯一索引,要求所有記錄都唯一
primary key ----主鍵索引,也就是在唯一索引的基礎上相應的列必須為主鍵
一般的創建索引的語句如下:
MySQL 中會對 <,<=,=,>,>=,BETWEEN,IN 以及不以% _ 開頭的like 語句使用索引。
為證實like處理方法以下為一個簡單的測試:
先不添加索引,隨機插入100W 條記錄,並測試like 的查詢速度。
使用前后% 測試like 查詢速度:
70231條 用時0.531s
961406條用時1.422s
下面加入索引:
再次測試like 的查詢速度:
70231條 用時1.094s
961406條用時1.485s
表為MyISAM格式。 可以看到加了索引后查詢的效率並未得到提升。再使用 explain 關鍵字查看 like 'ab%' 的運行情況:
EXPLAIN
SELECT *
FROM tb_test IGNORE INDEX(my_index)
WHERE fval LIKE '%ab';
EXPLAIN SELECT *
FROM tb_test
WHERE fval LIKE '%ab';