Re: [SQL ] ROWID

看板Database作者 (如夢似幻)時間14年前 (2011/07/03 18:40), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串3/3 (看更多)
※ 引述《bohei (run and fall)》之銘言: : 不知道有沒有人知道這個東西QQ : 每一ROW一定會有一個ROWID : 我在網路上搜尋到的資料是ROWID會隨著TABLE改變而改變 : 如果有一個查詢、新增的程式 : 他利用ROWID去做搜尋的動作 : 在TABLE修改後也馬上更新PK跟ROWID之間的關係 : 他用ROWID當搜尋條件而不用PK : 目的只是為了搜尋速度嗎? : 用了ROWID當條件做搜尋 : 在資料量很大很大的時候 : 速度會遠比用PK當條件還快嗎? : 還麻煩各位高手解答! ROWID在Oracle是個16進位的字串,代表Table中每一條row的唯一位置, 是由Object Number + File Number + Block Number + Row Number組成, 也就是紀錄每一筆record的真實邏輯位置,所以以它來當查詢條件是最快的。 Create Index其實建立的就是與ROWID之間的關聯 Query Data --> Use Index --> ROWID --> Table 但由於ROWID是由Oracle DB自行維護(包含Index所對應的),所以它是會變動的, 所以一般還是會Create Unique Index來使用。 那何時會使用到ROWID呢?以我個人的經驗是假設要對Table進行Update時, 需要手動Lock Row BEGIN FOR C_TEST IN (SELECT rowid row_id, * FROM table A FOR UPDATE) LOOP ........ ........ UPDAYE table A SET ........ WHERE A.rowid = C_TEST.row_id; END LOOP; END; -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 59.117.122.251
文章代碼(AID): #1E44SDHk (Database)
討論串 (同標題文章)
文章代碼(AID): #1E44SDHk (Database)