firebird database (快速入門)

參考文件(均可自firebird網站找到):
Novice's Guide
Migration from MS-SQL to firebird 
Firebord Release Notes 

  1. 學習資料庫基礎是在sql的語法應用(請參考:firebird 網站的說明文件最好把這份文件印出來,在寫程式時可以參考其語,雖然大部份都是sql-92相容,但是有差異,還有一些專有的語法)
  2. 當你需要的資料找不到時可以找尋interbase的相關資料(因為firebird是由 interbase釋放原始碼所衍生的)
  3. 有一本網路上完整的書"BORLAND INTERBASE7.0 應用開發指南 (姚啟紅著)",雖然是interbase但非常詳細,要深入了解(建議必讀)
尚在撰寫中............
目錄索引

前言
它是Borland之前推出interbase資料庫,並將其開放原始碼的免費資料庫軟體,目前版本是1.5.2,它比mysql, postgresql 更適合於windows作業系統,它並不是使用cygwin的方式移植到windows上,而是真正的windows軟體,我們一般將其比較於Ms- sql server,是一個小而美資料庫,最大的優點在於它是免費的(ms-sql server五人版至將近三萬元),其實它也支援不同作業平台(含inux),對於linux上我還是建議大家postgresql或是mysql
因為firebird若要用php的話就有點難了...,你要根據網站文件來作一些修改編譯的動作
#日前postgresql 8.0釋放已經支援windwos的原始檔(不使用cygwin來執行),但很可惜不支援98/me
因目前還是有人使用win98單機使用的資料庫,如果你單機上使用nt系統(2000/xp)等可以使用postgresql,因為postgresql 比起firebird來講某方面確實比較強,而使用者也比較多
架構
firebird 資料庫軟體有三種套件,並而支援不同作業平台(windows系列,linux,freebsd等...)
  1. Super Server-無法直接存取資料庫檔案,必須透過socket來和伺服器溝通
  2. Classic-直接存取資料庫的檔案,多個程式可以同時存取一個檔案,有點像vfp,dbase
  3. embedded-專為一些小型系統的嵌入式資料庫 (pda)
下載及安裝
主網站: http://firebird.sourceforge.net/
Download->Firebird relational database
直接點兩下就可以安裝,請照步驟,根據自己的需求來安裝
預設安裝路徑
windows:c:\program files\firebird\firebird_1_5
linux:/opt/firebird 
兩個作業系統下的目錄結構非常像
根目錄下:
firebird.conf-設定檔 
aliases.conf  -別名檔
friebird.log -記錄檔
SYSDBA.password -linux才有,管理者的名稱及密碼在裏面,windows則預設:名稱:sysdba,密碼:masterkey
windows直接使用security.fdb來存sysdba的密碼
注意:使用者名稱不分大小寫,但密碼有分
目錄/bin:
則是一些必要的主要及工具程式
設定 firebird 
主要的設定檔
firebird.conf 
預設tcp/ip會啟動port:3050
你可以使用telnet ip 3050來測試
aliases.conf
設定資料庫的別名
資料庫連線時一般要指定路徑,有時路徑太長時你可以指定,在aliases.conf中使用別名來存取
它是位於你安裝firebird的根目錄,以下為內建範例
# 別名 =  原始路徑
employee.fdb = /opt/firebird/examples/employee.fdb
 
其中#為註解,而windows及linux的路徑是有所不同:
# fbdb1 在Windows伺服器:
fbdb1 = c:\Firebird\sample\Employee.fdb
# fbdb2 在Linux伺服器:
fbdb2 = /opt/databases/killergames.fdb
資料庫執行時可以編輯這個檔案,不需要重新啟動伺服器
連線別名的方式:
Server_name:aliasname
使用者管理(consloe介面)
1.預設管理者名稱sysdba,密碼masterkey
2.密碼檔security.fdb,位於firebird安裝目錄下
3.管理程式gsec 
   安裝目錄下\bin
4.密碼長度限制在8碼
用法:
本地主機(資料庫server在本台電腦)
gsec -user sysdba -password <password> [options]
遠端主機(資料庫server在別台電腦)
gsec -user sysdba -password <password> -database <databasename>

gsec命令
di[splay]
顯示所有使用者
di[splay] <username>
顯示某使用者
a[dd] <username> -pw <password> [options]
新增使用者
mo[dify] <username> [options]
修改使用者
de[lete] <username>
刪除使用者
h[elp]
求助
?
同上
q[uit]
離開gsec
z
顯示版本

options
-pa[ssword] <password>
管理者的密碼
-user <username>
使用者名稱
-pw <password>
使用者密碼
-fname <first name>
英文名字有,三個部份
-mname <middle name>

-lname <last name>


範例
有兩種方式
1.直接下在命令列-
2.進入互動式的命令列-額外的命令
新增使用者
gsec -user sysdba -password masterkey 
gsec> add elvis -pw elvis -fname elvis -lnmae presley 
修改密碼
gsec> modify elvis -pw chunk 
修改sysdba密碼
gsec -user sysdba -password masterkey -modify sysdba -pw mykey37
修改遠端伺服器linux的sysdba密碼
gsec -user sysdba -password masterkey -database harry:/opt/firebird/security.fbd -modify sysdba -pw hamburg
修改遠端伺服器windows的sysdba密碼
gsec -user sysdba -password masterkey -database sally:"c:\Program files\Firebird\security.fdb" -modify sysdba -pw hannover
修改遠端伺服器使用tcp port 3050
gsec -user sysdba -password masterkey -database jack/3050:/opt/firebird/security.fdb" -modify sysdba -pw londo
修改遠端windows伺服器ip( a.b.c.d)使用tcp  port 3050 
gsec -user sysdba -password masterkey -database a.b.c.d/3050:"c:\program files\firebird\firebird_1_5\security.fdb  -modiyf sysdba -pw londo 
刪除本地使用者
gsec -user sysdba -password masterkey -delete joe 
資料庫管理(console)
程式isql位於安裝目錄下的bin
以下是一個操作範例:
c:\Program files\firebird\firebird_1_5\bin\> isql -user sysdba -password masterkey 
Use CONNECT or CREATE DATABASE to specify a database
SQL> connect test;
Database:  test, User: sysdba
SQL> show table;
       COUNTRY                                CUSTOMER
       DEPARTMENT                             EMPLOYEE
       EMPLOYEE_PROJECT                       JOB
       PHONE_LIST                             PROJECT
       PROJ_DEPT_BUDGET                       SALARY_HISTORY
       SALES
SQL> select * from country ;
COUNTRY         CURRENCY
=============== ==========
USA             Dollar
England         Pound
Canada          CdnDlr
SQL>quit;

建立資料庫
1.建立資料庫create database 
2.建立資料表格create table (sql指令)
3.刪除資枓表格drop  table (sql指令)
4.查詢資料庫中所含表格 show table 
5.查詢表格中的結構 show table 表格名稱
6.新增,刪除,更新(insert,delete,update)均為sql指令
7.SQL命令交付,在新增或刪除時,資料庫並未直接變更,要使用sql指命commit 或commit work來更新

isql -user sysdba -password masterkey
Use CONNECT or CREATE DATABASE to specify a database
SQL> create database 'c:\temp\test.fdb';
SQL> create table abc (name char(12),age numeric(3));
SQL> show table friend ;
FIRSTNAME                       CHAR(15) Nullable
LASTNAME                        CHAR(20) Nullable
CITY                            CHAR(15) Nullable
STATE                           CHAR(2) Nullable
AGE                             INTEGER Nullable

SQL> insert into abc (name ,age) values( 'cschen',34);
SQL> select * from abc;

NAME             AGE
============ =======
cschen            34 
以上的操作主要是sql指令
命令的結尾必需使用";", 如果沒有使用";"提示會由SQL>變為CON>,告訴你延續之前的命令
SQL>create table friend 
CON>(FIRSTNAME CHAR(13),
CON> LASTNAME CHAR(40),
CON> STATE CHAR(2),
CON> AGE INTEGER );
同下
SQL>create table friend (FIRSTNAME CHAR(13),LASTNAME CHAR(40),STATE CHAR(2),AGE INTEGER);


每一個資料庫有一個特殊資料庫- 系統資料庫 ,包含了使用者權限等...
SQL> show system;
       RDB$CHARACTER_SETS                     RDB$CHECK_CONSTRAINTS
       RDB$COLLATIONS                         RDB$DATABASE
       RDB$DEPENDENCIES                       RDB$EXCEPTIONS
       RDB$FIELDS                             RDB$FIELD_DIMENSIONS
      ..................                ..................
 
使用者權限
1.GRANT 授予使用者權限
  GRANT 權限 ON 物件 TO 對象 [with grant option]
2.REVOKE 撤消使用者權限
  REVOKE 權限 ON 物件 FROM 對象

權限:SELECT ,INSERT ,UPDATE,DELETE, ALL
物件:TABLE,VIEW
對象:使用者,PUBLIC(代表全部)
with grant option 讓該名使用者有設定別的使用者的權限 
*因為isql無法輸入中文,因此無法使用在中文輸入資料
*在linux下由於可能會有同名的isql(unixODBC套件),而linux安裝在/opt/firebird,因此必須使用絕對路徑來執行,另資料庫的管理者名稱可以不固定,至於密碼在安裝時會自動產生在檔案SYSDBA.password中
連線方式(檔案/tcpip)
程式支援兩種連線方式
1.使用完整路徑連線
  c:\abcd.....
2.使用tcpip連線,在路徑前加主機的名稱或IP
   主機:c:\abcd....

我們可以根據切換這兩種
windows 下的路徑如有空白,有時必須使用" "將路徑框起來才可以用

資料庫/使用者管理(gui)
  
我有試過幾個免費的windows端的軟體 
選擇 ibeasy+ : 非常容易管理,必須有資料庫的觀念
另外可配合 marathon 使用
ibeasy+使用者管理介面:
server->users management

(輸入管理者的名稱及密碼,進入下一個視窗)

(你就可以管理你的使用者)

設定odbc 
在firebird->download ->odbc
下載後安裝
odbc 

Database 
1.完整路徑-c:\database\abc.fdb
2.tcp/ip-ip:完整路徑(127.0.0.1:c:\database\abc.fdb)
資料庫的安全(備份/回存)(console)

GBAK:命令列工具,命令有兩個狀態,備份/回存(-b / -c)

語法  
gbak <options> -user <username> -password <password> <source> <destination>  
1.備份
gbak -b  <source> 是你要備份的資料庫來源, <destination>是備份的目的地檔名.一般的延伸附檔名 是 .fbk .
只有SYSDBA 或是資料庫的擁有者可以執行備份工作. 對於多個檔案的資料庫,只需指定第一個檔案的名稱來當資料庫的名稱. 
2.回存  
gbak -c  <source> 是先前備份的檔案而<destination> 是資料庫的名稱


選項

(中括號內的是非必要,也就是命令可以使用中括號前的縮寫,或是含中括號內為長參數)

參數 說明 功能
-b[ackup_database]  備份 備份
-bu[ffers] Set cache size for restored database 回存
-c[reate_database] 回存 (必要參數) 回存
-co[nvert] 轉換外部表格到內部表格s 備份
-e[xpand] 建立一個非壓縮的備份 備份
-fa[ctor] n 磁帶機的區塊系數 備份
-g[arbage collect] 備份時不清空已刪除的資料 備份
-i[nactive] 所有的索引將回存為INACTIVE 回存
-ig[nore] 備份時不做checksum錯誤檢查 備份
-k[ill] 在不建立定義備份中的shadows 回存
-l[imbo] 備份時忽略limbo transactions 備份
-m[etadata] 只備份資料表格的metadata (schema).不備份資料 備份
-mo[de] read_write  回存一個 可讀/寫的資料庫(預設) 回存
-mo[de] read_only 回存一個唯讀寫資料庫 回存
-n[o_validity] 不回存validity constraints.也就是回存資料不回存 constraints 
回存
-nt 非相容性的格式(只使用在相同作業平台,及firebird版本) 備份
-o[ne_at_a_time] 一次回存一個表格.你可以分別分次回存表格 
回存
-ol[d_descriptions] 舊的格式 備份
-p[age_size] <size> 設定page size of new database.
 <size> 可以是 1024, 2048, 4096, 8192.預設1024. 
回存
-pa[ssword] <password> 資料庫的密碼  
-r[eplace_database] 回存在一個存在的資料庫上.只能在擁有本資料庫的使用者可以操作 
這是覆寫,不要執行在使用中的資料庫!
回存
-role <role> 使用某一群組(role )來連線  
-se[rvice]  <hostname>:service_mgr 備份: 建立,使用服務管理.
回存: 回存,使用服務管理.
 
-t[ransportable] 建立可轉移的備份(不同作業系統及firebird版本) 備份
-u[ser] <username> 資料庫使用者的名字 
 
-use_[all_space] 正常,回存,資料庫頁會填滿80% 
唯讀才會寫回100%(因為不用預留修改的空間)
回存
-v[erbose] 顯示所有gbak執行的詳細動作 
 
-y <filename> 重導所有的輸出到一個檔案 <filename>.
注意:命令執行之前不可以存在檔名! 
 
-y suppress_output Quiet mode   
-z 顯示版本  

範例:

正常的備份:
gbak -v -t -user SYSDBA -password "masterkey" dbserver:/db/warehouse.fdb c:\backups\warehouse.fbk

備份並記錄所有備份時的輸出訊息:
gbak -v -t -user SYSDBA -password masterkey -y c:\backups\warehouse.log dbserver:/db/warehouse.fdb c:\backups\warehouse.fbk

正常的回存:
gbak -c -v -user SYSDBA -password masterkey c:\backups\warehouse.fbk dbserver:/db/warehouse2.fdb

回存到一個已存在的資料庫:
gbak -c -r -v -user SYSDBA -password masterkey c:\backups\warehouse.fbk dbserver:/db/warehouse.fdb

回存一個唯讀的資料庫:
gbak -c -v -mode read_only -use_all_space -user SYSDBA -password masterkey c:\backups\warehouse.fbk c:\files\warehousedb.fdb

多重檔案備份
當資料庫很大時,要備份有點困難,因此我們將資料庫備份成許多小的檔案,如此儲存時比較方便

備份語法:
gbak [options] <database> <target file 1> <size 1> <target file 2> <size 2> ... <target file n>

注意: 不要指定最後一個檔案的大小.因我們不一定知道最後一個檔案需要多少空間來儲存,所以它將自動依據大小來儲存.至於其它檔案的大小可以是 bytes (8192), kilbytes (1024k), megabytes (5m), 或 gigabytes (2g)

回存語法:
gbak -c [options] <source file 1> <source file 2> ... <source file n> <database>

回存到一個多個檔案的資料庫

有些系統的檔案系統有限制,或是為了效能的因素,因此單一資料庫,可分成多個小的資料庫

gbak -c [options] <source file> <db file 1> <size 1> <db file 2> <size 2> ... <db file n>

注意:不要指定最後資料庫的大小.它可以無限制的依據回存的檔案來變更大小.
Size can be given in bytes (8192), kilbytes (1024k), megabytes (5m), or gigabytes (2g)

由備份多個檔案回存到多個檔案的資料庫:
gbak -c [options] <source file 1> <source file 2> ... <source file n> <db file 1> <size 1> <db file 2> <size 2> ... <db file n>

資料庫安全(備份/ 回存)(gui)
(ibeasy+,參考hlp檔)

選項 (Database | Save Database)

你可以簡單複製資料庫檔(如一般的指令copy) 但是無法確定資料庫的安全.
優點:

  • 改善效能經由排除不完整的(eliminating incomplete)交易和過期的記錄
  • 減少資料庫的大小-移除刪除的記錄
  • 獨立的備份和回存的功能和作業系統無關

執行時必要參數:

  •  資料庫全名
  • 備份檔案的名稱,可包含大小等特性.
  • The options which must be applied at the time of back up
    Checksums 檢查資料的完整. 
    End transactions 
    Metadata only 只存結構不存資料. 
    Eliminate garbage 予許釋放舊版本記錄的空間. 
    Old data format
    Transportable database 可以回存資料庫到不同的作業系統. 
    Convert to tables 轉換外部檔案到內部表格.
選項:  (Database | Restore Database)

執行這個操作,必須是這個資料庫的擁有者或是有執行管理系統的權限: SYSDBA.
一個資料備份的資料庫可以回存
執行時必要參數:

  • 備份檔案的名稱
  • 資料庫全名
  • 可用的參數 
    Page size 變更資料庫每頁的大小,可以改善效能.說實在,所有資料庫在一頁中會比較快.
    Rebuild Indices.  重建索引
    Create database image Allow the recovery of a database in case of disk crash. 
    Validity conditions Allow when data are not valid any more, following for example a modification of the integrity constraints, to be unaware of the integrity constraints. 
    Commit after each table 
    Replace database In this case, the database must be closed beforehand, and no user must be connected. 
    Create a new database This option is exclusive compared to the preceding option 
    Use all space to recreate the database. By default, at the time of the restoration of a database, the pages are filled out to 80%. This option makes it possible to fill them to 100%.

資料型態

名稱 大小 範圍 /精度 描述
Blob 不固定
blob段大小限於64K 動態變長度二進位類型,用於存放大量資料的情況,如圖片、音樂、視頻、多媒體等。其基本結構單位為段,它的子類型描述了存儲資料的詳細資訊
Boolean 16位 True
False
Unkown
代表了邏輯上的(真、假、不確定)與Dialect無關。
Char(N) n個字元 1到32767個位元組。雙字元集除2 固定長度的字元或字串
Date 64位 從西元後100年一月一日到32768年二月29日 日期類型。只有年月日,不帶時間
Decimal(P,S) 變數(16、32或64位) 精度p從1到18:指定數字的總長度;標度s從0到18:指定小數點後的位數。 定點小數。例如decimal(5,3)可以存儲的數位形式為:pp.sss
Double Precision 64位 從2.225×10的-308 次方
到1.797×10的308次方
IEEE雙精度浮點數,15位長度
Float 32位 從1.175×10的-38 次方
到3.402×0的38次方
IEEE單精確度浮點數,7位長度
Integer 32位 從-2147483648
到2147483647
整數
Numeric(P,S) 變長(16、32或64位) 精度p從1到18:指定數字的總長度;標度s從0到18:指定小數點後的位數。 定點小數。例如decimal(10,3)可以存儲的數位形式為:ppppppp.sss
Smallint 16位 從-32768到32767 短整數
Time 64位 從0:00 AM到23:59.9999 PM 時間類型
Timestamp 64位 從西元後100年一月一日到32768年二月29日 帶有時間的日期類型
Varchar(N) n個字元 1到32767個位元組。字元集決定了其能容納的最大字元數

#Blob
blob  sub_type   segment  
這是一個特有的資料型態,是用於儲存比較大量的資料,類似其它資料庫的text或是memo資料型態,在定義時有兩個附加參數是sub_type, segment
sub_type是blob的資料類型,以下是它的types.h中的定義
定義
說明
TYPE ("TEXT", 1,nam_f_sub_type)
TYPE ("BLR", 2,nam_f_sub_type)
TYPE ("ACL", 3,nam_f_sub_type)
TYPE ("RANGES", 4,nam_f_sub_type)
TYPE ("SUMMARY", 5,nam_f_sub_type)
TYPE ("FORMAT", 6,nam_f_sub_type)
TYPE ("TRANSACTION_DESCRIPTION", 7,nam_f_sub_type)
TYPE ("EXTERNAL_FILE_DESCRIPTION", 8,nam_f_sub_type)
文字,類似memo,而資料型態varchar限制 32K
二位元資料(圖片,影音檔等)


1,2是我們常用的,其它的很少使用
generator(計數器)
計數器可以我們幫助產生循序的數字,你可以將其看成如一個公共變數,使用gen_id(generator名稱,step)來取得一個值並加step
create generator my_gen 
num=gen_id(my_gen,1)

num
問題
如果純粹使用generator來填入,如果是uniqe或primary key,當generator最大值是2 64 (18446744073709551616) 如果超過會重回到0
由於generator的最大值2 64  是很大數字要產生重複的機率很小

要不要使用日期來配合產生?
如果配合日期則會產生重複的機率會減少
年月日+流水號
20040303004
而generator 只要產生流水號,但是流水號每天都是從1開始,並且一般會限制數字的寬度如四位數或三位數
如此造成重複性會增加
目前資料庫並無法處理這個問題,你必須自己設計一個表格來儲存這個值,配合sql指令來取得最後的值
(建議:不要浪費時間在使用在資料庫端的解決方法)
填入的欄位要字串或是數字?
如果是單獨使用generator,最好是用數字的格式比較好
#注意:integer只有32位元
範例:
自動展示
create generator test_gen ;
CREATE TABLE  test1 (serial_no char(3) not null primary key,name char(15));
建立觸發來自動取得ID(new.欄位名稱 ,這個變數是可以被sql指令時自動引用)
set term !!;
create trigger test for test1 active before insert  
as
begin
   new.serial_no=cast(gen_id(test_gen,1) as char(3));
end 
!!  
set term ; !!
#針對本身欄位變更方法:觸發包含了三種sql指令及二種狀態執行前/執行後
在insert的執行前,所有的插入到被觸發的表格的欄位,你可以使用 new.欄位名稱來存取,只要變更該值就可以自動變更新增到表格中的欄位值
#在建立trigger 時由於trigger中的;(分號)會混淆結束符號,因此使用sql指令或在isql中新增trigger請變更其結尾符號,是set term 結尾符號,預設的結尾符號";",因此做完要復原set term ;!!
 

流水號
每日重置流水號
使用表格欄位來記錄日期,檢查若日期不同則寫入新日期並將generator歸零(set generator 名稱 to 0),但無法使用在儲存函式中
在新增之前觸發這個功能,比上述更簡單(尚未測試)
create trigger test2 for test active before insert 
as 
declare variable temp_date    date;
declare variable serial_no    char(3);
begin
   if current_date==t_date then 
      #取得流水號 
      serial_no=cast(gen_id(generator名稱,1) as char(3));
   else
      #將流水號置為0,使用相減
       =GEN_ID(My_Generator, -GEN_ID(My_Generator))
      #取得流水號
   endif   
end
 
#current_date
select current_date from rdb$database
儲存函式或觸發呼叫其它的儲存函式
execute procedure 名稱[(變數1,變數2....)] [RETURNING_VALUES [(變數1,變數2.....)]]
最簡單的呼叫(不傳值,也不傳回值)直接執行 EXECUTE PROCEDURE 名稱
測試函式的執行或 GENERATOR的結果
1.建立一個GENERATOR
CREATE GENERATOR TESTGEN
2.建立一個儲存函式(只是將GENERATOR加一)
create procedure TEST 
as
DECLARE VARIABLE MY  FLOAT;
BEGIN
MY=GEN_ID("TESTGEN",1);
END
3.直接執行命令
EXECUTE TEST 
4.查詢GENERATOR是不是變為2
變數
函式中自己宣告的區域變數
1.直接引用-不需任何前置符號
2.用在sql語法中-必須前置:
記錄使用者
CURRENT_USER 和 CURRENT_ROLE
時間變數
current_time,current_date,current_timestamp
udf自定函式的內建函式
預設有內建函式放在在安裝目錄下的udf
中含有的函式資訊在fbudf.sql、ib_udf.sql,但真正函式是在fbudf.dll、ib_udf.dll
在firebird中使用者自定函式,和其它的sql-server有很大的不同
在firebird中udf一般是以c或c++寫成函式,然後編譯成為模組
1.windows- .dll檔
2.linux -  .so 檔
再來將其放在安裝目錄的UDF目錄下,一般會將其宣告檔放在同一目錄下,如果不是放在預設的目錄下,你必須在firebird的環境檔中設定,但是會有安全的問題.
如果你不會也不想寫自定函式,但是想要用別人寫好的函式
要使用宣告命令
declare external function 
其語法如下:
declare external function '名稱'
傳入的變數型態列表
returns 回傳變數型態 FREE_IT
entry_point '函式名稱' '模組名稱';
如果你不知道有那些函式可以使用,可以參考UDF目錄下的.sql
以下是完整抄自ib_udf.sql
DECLARE EXTERNAL FUNCTION ltrim 
    CSTRING(255)
    RETURNS CSTRING(255) FREE_IT
    ENTRY_POINT 'IB_UDF_ltrim' MODULE_NAME 'ib_udf';
你必須在isql連線資料庫完畢後執行上述的命令(或其它管理程式),則該函式就會隨資料庫可以被呼叫使用,
FREE_IT是在函式傳回值之後清掉所配置的記憶體.
個人認為目前client所提供的函式遠多於server端,因此除非必要否則儘量使用client端的函式
#ibeasy++不提供UDF的管理
#marthon提供
安全性(建立多個資料庫備份檔)
create shadow 
一旦使用上述命令則會建立一個同步的資料庫在其它的儲存設備上,這可以保障當資料庫邏輯或實體的儲存介面損壞時,有一個備份的資料庫可以即時取代
重建索引
alter index 索引名稱 inactive 
alter index 索引名稱 active 
上述命令可以用在重建索引,或是資料庫回存時想要加速其執行速度,不要回存時邊回存邊建立索引,先執行inactive則回存時索引會失去作用,等資料庫回存完畢時再執行active的動作,則會重建索引,當然只有在沒有人使用該資料庫時才可以使用

转载于:https://my.oschina.net/hemiya/blog/184567

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值