用Delphi程式維護資料表的索引

2022-08-02 21:12:09 字數 2954 閱讀 3155

用delphi程式維護資料表的索引

在資料庫程式設計中,索引檔案對於改善資料查詢速度有著舉足輕重的作用,充分使用索引檔案可以極大改善資料庫應用程式的效能,這一點恐怕是難以否認的.

在應用過程中,使用者的查詢條件可能是多種多樣的,如果能根據使用者查詢建立和選擇索引,對於保證應用程式的效能,無疑是很有幫助的.

另外,由於停電等意外事故很容易造成資料庫中的索引檔案未及時更新甚至於損壞,此時如果應用程式再出幾個錯誤資訊,無疑將使使用者的處境雪上加霜.

因而,動態維護資料庫索引檔案,將使你的資料庫應用程式更有穩定性和可靠性.筆者將以delphi程式設計中常用的paradox資料庫為例,介紹資料庫索引檔案的動態維護.

paradox資料表索引分為主索引(primary index)即關鍵字(primary key)索引和次索引(secondary index),其中主索引對應.px檔案,次索引對應.xg*和.yg*檔案.

一.建立表索引

(1) 用table.addindex來實現

方法:addindex( indexname,fieldnames,options )

其中:(詳見delphi幫助)

indexname:索引名稱,僅在指定次索引時有作用.

fieldnames:索引域,可指定多個域,各域之間用分號隔開,如field1;field2;field3

options:索引選項,可為[ixprimary, ixunique, ixdescending, ixcaseinsensitive, ixexpression]

其中:ixprimary : 建 立 的 索 引 為 主 索 引( 不 適 用 於dbase 數 據 表).

ixunique : 不 允 許 重 復 值 的 索 引.

ixdescending: 按 降 序 索 引.

ixcaseinsensitive: 索 引 排 序 時 按 忽 略 大 小 寫( 不 適 用 於dbase 數 據 表).

ixexpression: 建 立 表 達 式 索 引( 適 用 於delphi3.0, 僅 適 用 於dbase 數 據 表).

ixnonmaintained: 是 否 不 需 要bde 自 動 維 護( 適 用 於delphi1.0).

下面是乙個例子:

假設有乙個存放通訊錄資料表mycomm.db(型別為paradox)存放於本地目錄d:\mynote下,現建立乙個主索引(索引域為編號id)和乙個次索引(索引域為編號id和姓名name,索引名稱為nameindex).

with table1 do

begin

close;

databasename := d:\mynote;

tablename := mycomm.db;

open;

addindex(,id,[ixprimary]);

addindex(nameindex,id;name,);

close;

end;(2)用sql來實現

對paradox資料表來說,用sql只能建立次索引.

在sql語法中,用來建立索引的語句是:

create index indexname on tablename

(indexfield1,indexfield2,..)其中:

indexname為乙個次索引的名稱,如mysecindex1等.

tablename為對應資料表的名稱,如mytable等.

tablename後面為索引域列表,所有索引域有圓括號括起來,

各索引域之間用逗號隔開.

下面是乙個例子:

假設有乙個存放通訊錄資料表mycomm.db(型別為paradox)存放於本地目錄

d:\mynote下,現建立乙個次索引(索引域為編號id和姓名name,索引名稱為nameindex).

with query1 do

begin

close;

databasename := d:\mynote;

sql.clear;

sql.add( create index nameindex on mycomm(id,name) );

execsql;

end;二.刪除表索引

(1) 用table.deleteindex來實現deleteindex 只 能 刪 除 次 索 引 名 稱.

方法:deleteindex( indexname )

其中:(詳見delphi幫助)

indexname:次索引名稱.

下面是乙個例子:

假設有乙個存放通訊錄資料表mycomm.db(型別為paradox)存放於本地目錄

d:\mynote下,現有乙個次索引(索引域為編號id和姓名name,索引名稱為nameindex),將刪除之.

with table1 do

begin

close;

exclusive := true;

databasename := d:\mynote;

tablename := mycomm.db;

open;

deleteindex(nameindex);

close;

end; 

(2)用sql來實現

在sql語法中,用來刪除索引的語句是:

drop index tablename.indexname要刪除次索引時,indexname為乙個次索引的名稱,如mytable.mysecindex1等.

要刪除主索引時,indexname 為primary, 如mytable.primary;值得注意的是,在刪除主索引 成功後,資料表的所有次索引也自動刪除.

下面是乙個例子:

假設有乙個存放通訊錄資料表mycomm.db(型別為paradox)存放於本地目錄

d:\mynote下,已定義乙個主索引(索引域為編號id)和乙個次索引(索引域為編號id和姓名name,索引名 稱為nameindex).

現在因為索引損壞,要刪除索引,以便重新索引.

維護資料表常用SQL語句

逐漸接觸多人團隊erp軟體開發了。設計發布新的模組時候總結了下以前的同時的風格。總結出下面的經驗。其實這些語法在以往都有研究。但是系統用起來發現還是不那麼容易記得住,所以記下在此。新增資料表說明 execute sp addextendedproperty ms description 資料表說明 ...

用SQL語言建立資料表

用sql語言建立資料表 1 建立學生表student create table student sno char 8 sname char 20 s char 2 sdept char 20 sage smallint 2 建立課程表course create table course cno ch...

java程式獲得SqlServer資料表的表結構

取得一張表的結構資訊 使用databasemetadata與resultsetmetadata結合的方式獲取全部屬性 param conn 資料連線 param tablename 表名 return 表結構中列的儲存物件 throws sqlexception public tableinfo g...