2011-06-30 15 views
1

或者我需要專門更新它們。情況是這樣的:我有一個有150萬行和90列的表格。我們已經對數據進行了大量的清理工作,並且需要知道是否應該重建索引,或者是否已經在該表的UPDATE和INSERT操作期間重建索引。如果我在現有行中插入行或更新值,那麼這些更新列的更新是那些索引?

+0

從性能的角度來看,這個問題非常有趣;通常人們會說'索引加快你的查詢/ sql'。對於選擇這通常是正確的,但對於插入,更新和刪除可能是錯誤的。如果有索引需要維護,那麼RDBMS必須進行更多的磁盤訪問,爲非選擇語句做更多的工作等等。 – Karl

回答

2

已經有先進的日期。當更新或插入(或刪除)完成時,所有約束都已檢查,索引更新並且觸發器也運行正常。這包括對錶格的索引視圖。

這是Consistency in ACID

統計數據不更新,直到需要(這是查詢編譯時間),但這無關緊要

0

數據庫及時更新索引(unnless你明確告訴他們不要)

1

爲您更新/插入行到表中的索引更新。如果您正在進行大量的插入/更新,通常的做法是在開始流程之前刪除索引,然後重新創建它們以提高性能。除非確實需要,否則最好避免這種情況,因爲這有點讓人頭痛。

相關問題