資料庫 索引的優點和缺點

2021-10-01 18:12:58 字數 1466 閱讀 6875

索引就像是書的目錄,是與表或檢視關聯的磁碟上結構,可以加快從表或檢視中檢索行的速度。索引中包含由表或檢視中的一列或多列生成的鍵。這些鍵儲存在乙個結構(btree)中,使sql可以快速有效地查詢與鍵值關聯的行。

①  建立索引的列可以保證行的唯一性,生成唯一的rowid

②  建立索引可以有效縮短資料的檢索時間

③  建立索引可以加快表與表之間的連線

④  為用來排序或者是分組的字段新增索引可以加快分組和排序順序

①  建立索引和維護索引需要時間成本,這個成本隨著資料量的增加而加大

②  建立索引和維護索引需要空間成本,每一條索引都要佔據資料庫的物理儲存空間,資料量越大,占用空間也越大(資料表佔據的是資料庫的資料空間)

③  會降低表的增刪改的效率,因為每次增刪改索引需要進行動態維護,導致時間變長

①  總的來說就是資料量大的,經常進行查詢操作的表要建立索引

②  表中字段建立索引應該遵循幾個原則:

1) 越小的資料型別通常更好:越小的資料型別通常在磁碟、記憶體中都需要更少的空間,處理起來更快。

2) 簡單的資料型別更好:整型資料比起字元,處理開銷更小,因為字串的比較更複雜,處理起來也更耗時。

3)盡量避免null:應該指定列為not null。含有空值的列很難進行查詢優化,因為它們使得索引、索引的統計資訊以及比較運算更加複雜。你應該用0、乙個特殊的值或者乙個空串代替空值。

4) 對非唯一的字段,例如「性別」這種大量重複值的字段,增加索引也沒有什麼意義,所以索引的建立應當更多的選取唯一性更高的字段。

③  表與表連線用於多表聯合查詢的約束條件的字段應當建立索引

④  用於排序的字段可以新增索引,用於分組的字段應當視情況看是否需要新增索引。

⑤  新增多列索引的時候,對應的多條件查詢可以觸發該索引的同時,索引最左側的列的單條件查詢也可以觸發。

⑥  如果有些表注定只會進行查詢所有,也就沒必要新增索引,因為查詢全部只能進行全量搜尋即掃瞄全表。

索引的原理大致概括為以空間換時間,資料庫在未新增索引的時候進行查詢預設的是進行全量搜尋,也就是進行全域性掃瞄,有多少條資料就要進行多少次查詢,然後找到相匹配的資料就把他放到結果集中,直到全表掃瞄完。而建立索引之後,會將建立索引的key值放在乙個n叉樹上(btree)。因為b樹的特點就是適合在磁碟等直接儲存裝置上組織動態查詢表,每次以索引進行條件查詢時,會去樹上根據key值直接進行搜尋,次數約為log總條數,底數為頁面儲存數,例如乙個100萬資料的表,頁面儲存數為100,那麼有索引的查詢次數為3次log1000000

100,但是全量搜尋為100萬次搜尋,這種方式類似於二分法,但是這個是n分法。

乙個表有字段a、b、c,同時進行插入10000行記錄測試

在沒有建索引時平均完成時間是2.9秒

在對a欄位建索引後平均完成時間是6.7秒

在對a欄位和b欄位建索引後平均完成時間是10.3秒

在對a欄位、b欄位和c欄位都建索引後平均完成時間是11.7秒

從以上測試結果可以明顯看出索引對資料修改產生的影響

資料庫索引的優點和缺點

為什麼要建立索引呢?這是因為,建立索引可以大大提高系統的效能。第一,通過建立唯一性索引,可以保證資料庫表中每一行資料的唯一性。第二,可以大大加快 資料的檢索速度,這也是建立索引的最主要的原因。第三,可以加速表和表之間的連線,特別是在實現資料的參考完整性方面特別有意義。第四,在使用分組和排序 子句進行...

資料庫索引的作用和優點缺點

為什麼要建立索引呢?這是因為,建立索引可以大大提高系統的效能。第一,通過建立唯一性索引,可以保證資料庫表中每一行資料的唯一性。第二,可以大大加快 資料的檢索速度,這也是建立索引的最主要的原因。第三,可以加速表和表之間的連線,特別是在實現資料的參考完整性方面特別有意義。第四,在使用分組和排序 子句進行...

資料庫索引的作用和優點缺點

為什麼要建立索引呢?這是因為,建立索引可以大大提高系統的效能。第一,通過建立唯一性索引,可以保證資料庫表中每一行資料的唯一性。第二,可以大大加快 資料的檢索速度,這也是建立索引的最主要的原因。第三,可以加速表和表之間的連線,特別是在實現資料的參考完整性方面特別有意義。第四,在使用分組和排序 子句進行...