2010-09-13 80 views
2

假設我的表有10列....我必須選擇哪些列來創建索引?有沒有任何指導原則可以做到這一點?索引有什麼缺點?如果我更新列是INDEX的一部分,那麼會發生什麼?它會降低INDEXES的性能嗎?在SQL中建立索引

回答

3

從其他職位:

回答問題1:

1.1您應該經常使用在WHERE子句中的列創建索引。

1.2您應該在經常用於連接表的列上創建索引。

1.3您應該在ORDER BY子句中經常使用的列上創建索引。

1.4您應該在表中具有少數相同值或唯一值的列上創建索引。

1.5由於全表掃描可能比索引查詢更快,因此不應在小表(僅使用少數塊的表)上創建索引。

1.6如果連續索引中的多個列在WHERE子句中頻繁使用,請將最具選擇性的列放在CREATE INDEX語句中。

1.7列中有許多空值,您不搜索非空值。

1.8主鍵和唯一鍵自動具有索引,但您可能需要在外鍵上創建索引;

回答問題2:

2.1以前的規則

回答問題3:

3.1如果不考慮以前的建議,那麼指數變在數據庫的良好性能中中斷。

回答問題4和5:

4.1,5.1不要被頻繁修改索引列。修改索引列的UPDATE語句和修改索引表的INSERT和DELETE語句比沒有索引時花費的時間更長。這些SQL語句必須修改索引中的數據以及表中的數據。他們還產生額外的撤消和重做。

1

需要索引爲您的記錄提供唯一標識。

更新記錄時,索引應保持不變並保持不變。

+0

索引不需要賦予記錄唯一標識,但通常由RDBMS使用索引來高效地實現UNIQUE約束和主鍵。 – Unreason 2010-09-13 12:11:12

+0

更新索引字段或索引的一部分(對於多字段索引)時,索引也會更新。 – Unreason 2010-09-13 12:12:37

+0

關於自動編號索引的好處是唯一性的保證。你不需要它,但除非你這樣做,否則它不能保證。 – 2010-09-13 12:39:13