freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

oracle企業(yè)資產(chǎn)管理-資料下載頁

2025-01-25 17:05本頁面
  

【正文】 0 1 0 0 1 0 1 0 0 1 0 假設(shè)現(xiàn)在要查詢所有已婚的、居住在中部或西部地區(qū)的顧客數(shù)目,可以編寫如下的查詢語句: select count(*) from customer where marital_status=39。Married39。 and region in (39。Central39。, 39。West39。)。 如果在 MARITAL_STATUS和 REGION字段上都建立了位圖索引,查詢的速度可以變得很快。因為只需要對這兩個字段的索引位圖進行邏輯運算,然后計算結(jié)果位圖中 1的個數(shù)即可得到滿足條件的顧客數(shù)目。 下圖 顯示了邏輯運算的過程。 S ta tu s = M a rrie d re g io n = Ce n tra l re g io n = W e s t 0 1 1 1 0 0 AND 0 1 0 1 1 0 0 0 1 0 0 1 = OR 0 1 1 1 0 0 AND 0 1 1 1 1 1 = 0 1 1 1 0 0 位圖索引適合那些基數(shù)比較小的字段,即索引字段的取值范圍只包括少數(shù)幾個固定的值 。而 B樹索引比較適合高基數(shù)的列;另外使用 or謂詞查詢時,位圖索引效率較 B樹索引高;在數(shù)據(jù)倉庫應(yīng)用中較常用位圖索引, OLTP中較常用 B樹索引。 當建立 B*樹索引時,默認情況下索引入口數(shù)據(jù)是按照升序方式排列的。如果在順序遞增或順序遞減的列上使用 B*樹索引,那么將會使得索引數(shù)據(jù)分布不均,最終導(dǎo)致索引層次急劇增加。例如,對于使用序列的主鍵列就會產(chǎn)生這種情況。為了避免出現(xiàn)以上情況, Oracle建議在順序遞增或順序遞減的列上建立反向索引,而不是 B*樹索引。 反向索引是指索引列值按照相反順序存放的索引 KEY ROWID ID (BLOCK ROW FILE) 1257 2877 4567 6657 8967 9947 ...... ID FIRST_NAME JOB 7499 ALLEN SALESMAN 7369 SMITH CLERK 7521 WARD SALESMAN 7566 JONES MANAGER 7654 MARTIN SALESMAN 7698 BLAKE MANAGER 7782 CLARK MANAGER …......... 索引 REV_EMP EMP表 當職工號 7698插入表中時,關(guān)鍵字值 8967將存儲在索引中。當輸入下一個職工號 7782時,生成2877的索引項,從而將工作量分散在多個索引塊間,避免了 I/O瓶頸 創(chuàng)建反向索引的語法如下: CREATE UNIQUE INDEX [schema.]index ON [schema.]table (column[ASC|DESC] [,column[ASC|DESC]] …) [TABLESPACE tablespace] [PCTFREE integer] [INITRANS integer] [MAXTRANS integer] [storageclause] [LOGGING|NOLOGGING] REVERSE 注意: NOSORT關(guān)鍵字不適用于反向索引。 下面是一個建立反向索引的例子: create unique index orders_id_idx on orders(id) reverse pctfree 30 storage(initial 200k next 200k pctincrease 0 maxextents 50 ) tablespace indx。 4. 建立函數(shù)索引 當基于某列建立了 B*樹索引之后,如果在WHERE子句直接引用該列,那么 Orade會自動引用該B*樹索引。但是如果引用該列是通過函數(shù)或表達式方式引用的,那么就不會用到該索引。例如,如果基于表 EMP的 ENAME列建立了 B*樹索引,那么當執(zhí)行語句“ select * from emp where ename=39。SCOTT39。 ” 時會引用該索引,但執(zhí)行語句“ select * from emp where upper(ename)= 39。SCOTT39。 ”卻不會引用該索引。所以,如果在 WHERE子句中經(jīng)常要引用某函數(shù),那么你應(yīng)該基于該函數(shù)建立索引。函數(shù)索引是指基于函數(shù)或表達式的索引,函數(shù)索引是從 Oracle8i開始新增加的特征。 建立函數(shù)索引也是使用 CREATE INDEX命令來完成的。但大家需要注意,建立函數(shù)索引還要求用戶具有 QUERY REWRITE系統(tǒng)權(quán)限。 下面是一個創(chuàng)建函數(shù)索引的例子: create index upper_ename on emp(upper(ename))。 修改索引 1. 修改索引存儲參數(shù)設(shè)置 2. 當建立索引時, Oracle會為索引分配相應(yīng)的索引段。如果索引段存儲參數(shù)不合適,那么你可以使用 ALTER INDEX命令修改其存儲參數(shù)。大家需要注意,存儲參數(shù) INITIAL不能修改,而修改其他存儲參數(shù)只對新分配的區(qū)起作用。修改索引段存儲參數(shù)的示例如下: 3. alter index upper_ename storage(next 200k maxextents 50)。 2. 分配和釋放索引空間 當使用 SQL*Loader給表裝載數(shù)據(jù)時,同時也會給其索引填加數(shù)據(jù)。如果初始索引空間不足以容納這些索引數(shù)據(jù),那么就會導(dǎo)致索引段動態(tài)擴展,從而降低數(shù)據(jù)裝載的速度。為了避免索引段動態(tài)擴展,在執(zhí)行裝載操作以前為索引段分配足夠空間,示例如下 : alter index department_dname allocate extent ( size lM)。 另外,當索引段占用了過多空間,而實際所需空間較小時,你可以使用 ALTER INDEX命令釋放其多余空間,如下所示 : alter index department_dname deallocate unused。 利用 ALTER INDEX…REBUILD 語句可以對索引進行重建操作。重建索引實際上是在指定的表空間中重新建立一個新的索引,然后再刪除原來的索引。 重建索引不僅能夠消除存儲碎片,同時還可以改變索引的全部存儲參數(shù)設(shè)置,并且可以將索引移動到其他的表空間中。 重建索引示例如下: alter index department_dname rebuild。 當相鄰索引葉塊都存在剩余空間,并且它們的索引入口數(shù)據(jù)可以存放到同一個索引葉塊時,通過合并索引可以提高索引空間的利用率 。 如上圖所示,左邊的兩個索引葉塊都存在 50%的剩余空間,通過合并索引可以將它們的索引入口數(shù)據(jù)合并到一個索引葉塊中。合并索引的命令如下所示: alter index department_dname coalesce。 刪除索引 刪除索引是使用 DROP INDEX命令完成的。執(zhí)行該命令的用戶必須具有 DROP INDEX系統(tǒng)權(quán)限。如果要在其他用戶模式中修改索引,則必須具有 DROP ANY INDEX系統(tǒng)權(quán)限。 當索引不再需要時,你應(yīng)該刪除該索引,以釋放其所占用的空間;如果移動了表的數(shù)據(jù),那么會導(dǎo)致索引無效,此時需要刪除并重建索引;另外,當使用 SQL*Loader裝載數(shù)據(jù)時,系統(tǒng)也會同時給索引增加數(shù)據(jù),為了加快數(shù)據(jù)裝載速度,裝載之前刪除索引,然后在數(shù)據(jù)裝載完畢之后重新建立索引,刪除索引的具體命令如下: DROP INDEX department_dname。 顯示索引信息 1. 顯示某表包含的所有索引 2. 通過查詢數(shù)據(jù)字典 DBA_INDEXES和USER_INDEXES可以知道表上所建立的索引信息,其中 DBA_INDEXES可以顯示數(shù)據(jù)庫所有索引的信息,而USER_INDEXES則用于顯示當前用戶的索引信息,示例如下: 3. select index_name,index_type,uniqueness from user_indexes where table_name=39。EMP39。 通過查詢數(shù)據(jù)字典 USER_SEGMENTS,可以顯示當前用戶索引段的位置及尺寸,如下所示: select tablespace_name , blocks from user_segments where segment_name=39。BIT_EMP39。 當執(zhí)行了上述語句之后,會顯示索引段 BIT_EMP所在的表空間,以及該索引段所包含的塊個數(shù) 。 當建立索引時,需要指定索引所對應(yīng)的字段。通過查詢數(shù)據(jù)字典 USER_IND_COLUMNS,可以顯示索引所對應(yīng)的字段信息,如下所示: select table_name||39。.39。||column_name 表 /列 from user_ind_columns where index_name=39。PK_EMP39。 管理數(shù)據(jù)的完整性 實現(xiàn)數(shù)據(jù)完整性可以使用應(yīng)用代碼、觸發(fā)器和約束三種方法,如果要使用應(yīng)用代碼實現(xiàn)商業(yè)規(guī)則,那么既可以使用數(shù)據(jù)庫存儲過程實現(xiàn),也可以使用客戶端的過程和函數(shù)實現(xiàn);而觸發(fā)器則是隱含執(zhí)行的 PL/SQL存儲程序,當執(zhí)行 DML操作時會觸發(fā)觸發(fā)器。與應(yīng)用代碼和觸發(fā)器相比,約束不僅具有更好的性能,而且維護更加容易,所以實現(xiàn)數(shù)據(jù)完整性的首選方法是使用約束。 約束類型 NULL約束 該約束用于指定列不能為 NULL。當插人數(shù)據(jù)時,必須要為 NOT NULL列提供數(shù)據(jù)。 只能在字段級定義 NOT NULL約束,并且在同一個表中可以定義多個 NOT NULL約束。 create table student ( sno number(5) primary key, sname varchar2(20) constraint c1 not null, sage number(3) ) 。 惟一約束用于指定列的數(shù)據(jù)不能重復(fù)。但大家需要注意,惟一約束列可以為 NULL。 例如,建立部門表 DEPT,要求部門名稱 Dname列值唯一。 create table dept ( deptno number primary key, dname varchar2(9) constraint u1 unique, loc varchar2(10) )。 注意:當指定惟一約束時,系統(tǒng)會自動基于惟一約束列建立索引。 主鍵約束用于惟一標識表行的數(shù)據(jù)。當指定了主鍵約束之后,主鍵約束列值不能重復(fù),并且主鍵約束列不能為NULL。 例如,將 sno定義為 student表的主碼: create table student ( sno number(8), sname varchar(20), sage number(20), constraint pk_nos primary key (sno) )。 注意: 當指定主鍵約束時,系統(tǒng)會自動基于主鍵列建立索引;一張表只能有一個主鍵約束。 外部鍵約束用于定義兩張表之間的關(guān)系,外部鍵列數(shù)據(jù)必須在主鍵列中存在,或者為 NULL。 檢查約束用于強制列值必須滿足的條件。 例如,建立職工表 EMP,要求每個職工的應(yīng)發(fā)工資不得超過
點擊復(fù)制文檔內(nèi)容
規(guī)章制度相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1