我以前認爲,當我更新表中的索引列時,同時索引也被更新。但在我的一次採訪中,採訪者強調,這種方式並不奏效。對於基表中的任何更新,索引將重建/重新組織。雖然我很確定這不會發生,因爲這兩個操作都非常昂貴,但仍然想要與專家的觀點保持一致。當索引鍵在表中更新時,索引更新如何工作?
在想到這件事時,還有一件事出現在我的腦海裏。假設我有索引列值1-1000。因此,按照B-Tree結構,假設值爲999,將自上而下地排列在最右側的節點上。現在,如果將此列從999更新爲2,則需要進行大量混洗才能在索引B-Tree中調整此值。在基表更新後,如果索引重建/重新組織不會發生,將如何處理。
B樹不完整或平衡,它只是將其移動到正確的位置,如果它不適合,索引頁將被拆分爲2. –
但在我的示例中,我說更新999 2,根據樹中節點的級別,可能需要很多轉換。那麼它只會做這些轉變還是會重建或重組? –
它只會移動那一條記錄,其他記錄將保留 - 這就是爲什麼你需要重建/重組,因爲索引將會碎片化 –