一、為什么索引過的字段排序速度會很快
1、索引是對數據庫表中一列或多列的值進行排序的一種結構,本身是一個有序鍵值列表。這樣檢索的數據直接可以以順序列出。
2、通常來說,索引比要檢索或者排序的表本身小很多,足夠放在內存中或者一次性讀取,確定了數據位置,直接讀取磁盤上相應的數據塊,以減少磁盤I/O,對現在的計算機來說,磁盤I/O的開銷很大。如果沒有索引,排序一般需要全表掃描,大大增加磁盤I/O。
但索引本身也是表,因此會占用存儲空間,一般來說,索引表占用的空間的數據表的1.5倍;索引表的維護和創建需要時間成本,這個成本隨著數據量增大而增大;構建索引會降低數據表的修改操作(刪除,添加,修改)的效率,因為在修改數據表的同時還需要修改索引表。
延伸閱讀:
二、全文索引
FULLTEXT(全文)索引,僅可用于MyISAM和InnoDB,針對較大的數據,生成全文索引非常的消耗時間和空間。對于文本的大對象,或者較大的CHAR類型的數據,如果使用普通索引,那么匹配文本前幾個字符還是可行的,但是想要匹配文本中間的幾個單詞,那么就要使用LIKE %word%來匹配,這樣需要很長的時間來處理,響應時間會大大增加,這種情況,就可使用時FULLTEXT索引了,在生成FULLTEXT索引時,會為文本生成一份單詞的清單,在索引時及根據這個單詞的清單來索引。FULLTEXT可以在創建表的時候創建,也可以在需要的時候用ALTER或者CREATE INDEX來添加。