對於關係型數據庫中的索引的基本理解

說白了索引就是一個查找問題

索引是對數據庫表中的一列或者說是多列進行排序的一種結構,使用索引可以快速訪問數據庫表中的特定信息。索引的一個主要目的就是加快檢索表中數據的方法


例子:這樣一個查詢語句selecr * from table1 where id=1000;
   如果沒有索引的話,必須遍歷整個表,知道id等於10000的這一行被找到爲止。但是有了索引之後(必須在id這一列上建立索引),即可在索引中查找,由於
    索引是經過某種算法優化過的,因爲查找次數要少的多。可見索引是用定位的。

數據庫索引的數據結構基礎:B+tree

數據庫索引是用於提高數據庫表的數據訪問速度

a)、索引的目的是什麼?
1 能夠避免進行數據庫全表的掃描
2 快速訪問數據表中的特定信息,提高檢索速度
3 創建唯一性索引,保證數據庫表中每一行數據的唯一性。
4 加速表和表之間的連接
5 使用分組和排序子句進行數據檢索時,可以顯著減少查詢中分組和排序的時間

b)、索引對數據庫系統的負面影響是什麼?
負面影響:
    創建索引和維護索引需要耗費時間,這個時間隨着數據量的增加而增加;索引需要佔用物理空間,不光是表需要佔用數據空間,每個索引也需要佔用物理空間;當對錶進
    行增、刪、改、的時候索引也要動態維護,這樣就降低了數據的維護速度。

c)、一般來說應該在這些列上建立索引?
1 在經常需要搜索的列上,可以加快搜索的速度
2 在經常需要排序的列上創建索引,因爲索引已經排序,這樣查詢可以利用索引的排序,加快排序查詢時間
3 在經常使用在WHERE子句中的列上面創建索引,加快條件的判斷速度。
d)、 不應該在這些列上建立索引?
1 對於那些在查詢中很少使用或者參考的列不應該創建索引,這是因爲,既然這些列很少使用到,因此有索引或者無索引,並不能提高查詢速度。相反,由於增加了索引,反而降低了系統的維護速度和增大了空間需求
2 當修改性能遠遠大於檢索性能時,不應該創建索引,這是因爲修改功能和檢索功能是互相矛盾的
發佈了41 篇原創文章 · 獲贊 6 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章