資料庫建立索引的原則

2021-09-01 03:34:07 字數 1806 閱讀 8638

資料庫建立索引的原則

1,確定針對該錶的操作是大量的查詢操作還是大量的增刪改操作。

2,嘗試建立索引來幫助特定的查詢。檢查自己的sql語句,為那些頻繁在where子句中出現的字段建立索引。

3,嘗試建立復合索引來進一步提高系統效能。修改復合索引將消耗更長時間,同時,復合索引也佔磁碟空間。

4,對於小型的表,建立索引可能會影響效能

5,應該避免對具有較少值的字段進行索引。

6,避免選擇大型資料型別的列作為索引。

索引建立的原則

索引查詢是資料庫中重要的記錄查詢方法,要不要進入索引以及在那些欄位上建立索引都要和實際資料庫系統的查詢要求結合來考慮,下面給出實際中的一些通用的原則:

1. 在經常用作過濾器的字段上建立索引;

2. 在sql語句中經常進行group by、order by的字段上建立索引;

3. 在不同值較少的字段上不必要建立索引,如性別字段;

4. 對於經常訪問的列避免建立索引;

5. 用於聯接的列(主健/外健)上建立索引;

6. 在經常訪問的多個列上建立復合索引,但要注意復合索引的建立順序要按照使用的頻度來確定;

7. 預設情況下建立的是非簇集索引,但在以下情況下最好考慮簇集索引,如:含有有限數目(不是很少)唯一的列;進行大範圍的查詢;充分的利用索引可以減少表掃瞄i/0的次數,有效的避免對整表的搜尋。當然合理的索引要建立在對各種查詢的分析和**中,也取決於dba的所設計的資料庫結構。

oracle 索引建立的若干原則

我們首先要考慮的是資料量,資料量級別的不同,要考慮的問題有很大區別。幾千條記錄建不建索引其實都無所謂了,差個幾豪秒也感覺不出來,但資料量一旦要增長到百萬, 千萬級別,索引的重要性就體現出來了。沒有索引乙個查詢可能要幾個小時甚至幾天才能出來,對資料庫的影響不僅僅是查詢速度的降低, 在io 上的花費和對資料庫連線資源的占用甚至會拖跨資料庫。那麼怎樣建立索引,建立什麼型別的索引呢,應該按照幾個方面來考慮。

1. 先要了解業務需求,總結出應用會按照哪幾個欄位來進行查詢。例如乙個人員查詢系統可能會按照(姓名,身份證件號碼,性別,住址,民族等),當然可能是幾個欄位的組合查詢。

2. 確定了第一步後要估計資料的分布。相同值有多少,是不是均勻。如姓名欄位就會有大量的重複情況;性別可能只有兩個值(1,2 分別代表男,女),民族會有56 個。

3. 確定索引的型別。選擇性高的字段建立b- 樹索引最好,如果資料量太大,可考慮把索引分割槽,在併發情況下通常會表現很好。相當於把一棵很大的b樹拆開成了多棵小樹。只有幾個值的字段如性別並且資料分布比較均勻,查詢的平均命中率要是非常高就不需要建立索引,否則可以建立位圖索引(但會影響併發)。

oracle建立索引原則

索引需要平衡query和dml的需要,常用於(子)查詢的表應建立索引;

把索引建到不同的表空間中;

用統一的extent大小:

五個block的倍數或者tablespace指定的minimum extent的倍數;

建立索引考慮用nologging引數,重建索引的時候也一樣;

建立索引時initrans值應該比相應的table的值高一些;

對常用sql語句的where條件中的列建立唯一索引或組合索引,組合條件查詢中相應的組合索引更有效;

對於組合索引,根據列的唯一值概率,安排索引順序;

如果乙個列具有很低的資料基數,並且或者可具有空值,不應作為索引列;

如果where語句中不得不對查詢列採用函式查詢,如upper函式,最好建立相應函式索引;

對於低基數集的列,幷包含or等邏輯運算,考慮用bitmap索引,對於從大量行的表中返回大量的行時也可以考慮bitmap索引;

避免在有大量併發dml運算的表中使用bitmap索引;

資料庫索引建立原則

索引並不是越多越好,在合適的字段上建立合適的索引。索引的建立會影響寫資料的操作速度,會占用更多的磁碟空間。所以建立索引最好是在where條件內作為查詢條件。當然也要注意一些細節 1 比如復合索引字首原則,當我們建立a b c三個復合索引時,當我們使用ab或者a或者abc時,索引會被用到,但是使用bc...

資料庫建立索引的原則

鐵律一 天下沒有免費的午餐,使用索引是需要付出代價的。索引的優點有目共睹,但是,卻很少有人關心過採用索引所需要付出的成本。若資料庫管理員能夠對索引所需要付出的代價有乙個充分的認識,也就不會那麼隨意到處建立索引了。仔細數數,其實建立索引的代價還是蠻大的。如建立索引和維護索引都需要花費時間與精力。特別是...

資料庫建立索引的原則

鐵律一 天下沒有免費的午餐,使用索引是需要付出代價的。索引的優點有目共睹,但是,卻很少有人關心過採用索引所需要付出的成本。若資料庫管理員能夠對索引所需要付出的代價有乙個充分的認識,也就不會那麼隨意到處建立索引了。仔細數數,其實建立索引的代價還是蠻大的。如建立索引和維護索引都需要花費時間與精力。特別是...