假設我有一個表,並在其上如何通過RDBMS處理表UPDATE?
original simple table A
------------------------
rowid | id name
123 | 1 A
124 | 4 G
125 | 2 R
126 | 3 P
index on A.id
-------------
id rowid
1 123
2 125
3 126
4 124
指數在這一點上,我執行此DML語句
UPDATE A SET id = 5 WHERE id = 4
執行該語句時,究竟會發生什麼?
一)
BEGIN
go to index
search for `id == 4` (B tree index generally)
find that `rowid = 124`
go to that location
update id in the table
come back (? I am not sure)
update the index
END
B)
BEGIN
go to index
search for `id == 4` (B tree index generally)
update the id value in index
find that `rowid = 124`
go to that location
update id in the table
END
三)完全是另一回事發生
由於這可能是依賴於數據庫本身,它是如何發生的甲骨文上?
我猜這個實現有所不同,其中很多會默認爲c)而不是簡單地插入a)或b)... – meagar 2010-08-09 16:54:16
這是功課嗎? – 2010-08-09 17:41:40
@亨克:不,我只是想了解它是如何工作的。這是我編造的場景。 – Moeb 2010-08-10 03:13:10