Re: [SQL ] ROWID
※ 引述《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
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 3 之 3 篇):