關於索引問題 |
答題得分者是:P.D.
|
dancer_in_rain
一般會員 發表:5 回覆:9 積分:2 註冊:2010-05-13 發送簡訊給我 |
情況說明:
我有一個.DBF的檔案(以前在DOS CLIPPER 發展的資料庫檔案), 現在要轉成 PARADOX 的 .DB 檔案,因為 .DB 的主索引不能重覆,而 我在轉資料時,一定會有重覆發生(像是訂單明細檔的訂單編號一定 重覆),所以我在轉時,資料檔.DB先沒設主索引,轉完之後,再用程式 給予同一訂單編號的明細資料一個序號,再進DATABASE DESKTOP 用 手動的方式加上索引。(在發展程式過程中,轉入實際資料以供測試,所以 會常重覆的做到這動作) 問題: 主索引可以在先有資料後,在程式中讓它再產生嗎? 我試過 Table.AddIndex 這方法,可是它好像只能用在 secondary index上耶 有沒有其他的方法可以取代呢? 謝謝! |
dancer_in_rain
一般會員 發表:5 回覆:9 積分:2 註冊:2010-05-13 發送簡訊給我 |
|
P.D.
版主 發表:603 回覆:4038 積分:3874 註冊:2006-10-31 發送簡訊給我 |
索引的目的是加快搜尋的動機, 但以你本案為例, 假設master 與 detail 是靠一組 "訂單編號" 在關聯的話,
一旦設定主索引, 勢必造成訂單明細重覆的記錄不見, 但你加入一個序號做索引, 無助於讀取或搜尋的速度, 因為訂單編號無法索引, 搜尋時仍然是逐筆掃瞄, 所以沒有意義 建議 1.想辦法找到 "訂單編號" 其他欄位(例如項次, 或序號)一起做複合索引 2.db檔中有一個 A 的欄位結構屬性, 是 DB 自動加序號的, 可以做為主索引, 再把 "訂單編號" 做 second index 亦可 3.在程式中是可以建立主索引的, 重點在於 宣告一個 xIndex: TIndexOptions; // 注意要uses DB 指定 xIndex:= [ixPrimary, ixUnique, ixDescending, ixCaseInsensitive, ixExpression]; 請自行決定 [...] 要保留的屬性, 主索引則一定要保留 [xPrimary, 其他可斟酌移除 建立索引 Table1.AddIndex(索引檔名,索引欄位名稱,xIndex,'') 注意, 建立索引前, 一定要用 fileexists() 檢查舊的索引檔是否存在, 如是則必須先刪除 主索引為 .px 二, 三索引為 xg0, yg0 ... 等等 ===================引 用 dancer_in_rain 文 章=================== 情況說明: 我有一個.DBF的檔案(以前在DOS CLIPPER 發展的資料庫檔案), 現在要轉成 PARADOX 的 .DB 檔案,因為 .DB 的主索引不能重覆,而 我在轉資料時,一定會有重覆發生(像是訂單明細檔的訂單編號一定 重覆),所以我在轉時,資料檔.DB先沒設主索引,轉完之後,再用程式 給予同一訂單編號的明細資料一個序號,再進DATABASE DESKTOP 用 手動的方式加上索引。(在發展程式過程中,轉入實際資料以供測試,所以 會常重覆的做到這動作) 問題: 主索引可以在先有資料後,在程式中讓它再產生嗎? 我試過 Table.AddIndex 這方法,可是它好像只能用在 secondary index上耶 有沒有其他的方法可以取代呢? 謝謝!
編輯記錄
P.D. 重新編輯於 2010-06-13 01:54:16, 註解 無‧
|
dancer_in_rain
一般會員 發表:5 回覆:9 積分:2 註冊:2010-05-13 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |