1. 程式人生 > >ORACLE索引,索引的建立、修改、刪除

ORACLE索引,索引的建立、修改、刪除

一、簡介

      索引是關係資料庫中用於存放每一條記錄的一種物件,主要目的是加快資料的讀取速度和完整性檢查。建立索引是一項技術性要求高的工作。一般在資料庫設計階段的與資料庫結構一道考慮。應用系統的效能直接與索引的合理直接有關

二、 語法

2.1 建立索引

CREATE INDEX
CREATE [unique] INDEX [user.]index
ON [user.]table (column [ASC | DESC] [,column
[ASC | DESC] ] ... )
[CLUSTER [scheam.]cluster]
[INITRANS n]
[MAXTRANS n]
[PCTFREE n]
[STORAGE storage]
[TABLESPACE tablespace]
[NO
SORT]

其中:
schema ORACLE模式,預設即為當前帳戶
index 索引名
table 建立索引的基表名
column 基表中的列名,一個索引最多有16列,long列、long raw 列不能建索引列
DESC、ASC 預設為ASC即升序排序
CLUSTER 指定一個聚簇(Hash cluster不能建索引)
INITRANS、MAXTRANS 指定初始和最大事務入口數
Tablespace 表空間名
STORAGE 儲存引數,同create table 中的storage.
PCTFREE 索引資料塊空閒空間的百分比(不能指定pctused)
NOSORT 不(能)排序(儲存時就已按升序,所以指出不再排序)

2.1修改索引

      對於較早的Oracle版本,修改索引的主要任務是修改已存在索引的儲存引數適應增長的需要或者重新建立索引。而Oracle8I及以後的版本,可以對無用的空間進行合併。這些的工作主要是由管理員來完成。

ALTER [UNIQUE] INDEX [user.]index
[INITRANS n]
[MAXTRANS n] 
REBUILD 
[STORAGE n]

其中:
REBUILD 是 根據原來的索引結構重新建立索引,實際是刪除原來的索引後再重新建立。

提示:DBA經常用 REBUILD 來重建索引可以減少硬碟碎片和提高應用系統的效能。

2.3 刪除索引

DROP INDEX [schema.]indexname

三、各類索引介紹

3.1 基於函式的索引

      基於函式的索引就是儲存預先計算好的函式或表示式值的索引。這些表示式可以是算術運算表示式、SQL或PL/SQL函式、C呼叫等。值得注意的是,一般使用者要建立函式索引,必須具有GLOBAL QUERY REWRITE和CREATE ANY INDEX許可權。否則不能建立函式索引。

示例:

為EMP表的ename 列建立大寫轉換函式的索引idx :

CREATE INDEX idx ON emp ( UPPER(ename));

這樣就可以在查詢語句來使用:
SELECT * FROM EMP WHERE UPPER(ename) LIKE ‘JOH%’;

3.2 反向鍵索引

      反向鍵索引通過反向鍵保持索引的所有葉子鍵上的插入分佈。有時,可用反向鍵索引來避免不平衡的索引。對於反向鍵索引可以進行下面操作:
1. 通過在ALTER INDEX命令後加REBUILD NOREVERSE或REBUILD REVERSE子句來使索引邊為反向鍵索引或普通索引;
2. 採用範圍掃描的查詢不能使用反向鍵索引;
3. 點陣圖索引不能反向;
4. 索引編排表不能反向。

示例1:建立一個反向鍵索引

CREATE INDEX i ON t (a,b,c) REVERSE;

示例2:使一個索引變為反向鍵索引

ALTER INDEX i REBUILD NOREVERSE

3.3 索引組織表

      與普通的索引不一樣,索引組織表(Index_Organized Table)是根據表來儲存資料,即將索引和表儲存在一起。這樣的索引結構表(Index_organized table—IOT)的特點是:對錶資料的改變,如插入一新行、刪除某行都引起索引的更新。
      索引組織表就象帶一個或多個列所有的普通表一樣,但索引組織表在B-樹索引結構的葉節點上儲存行資料。通過在索引結構中儲存資料,索引組織表減少了總的儲存量,此外,索引組織表也改善訪問效能。
由於表中的行與B_樹索引存放在一起,每個行都沒有ROWID,而是用主鍵來標識。但是Oracle會“猜”這些行的位置併為每個行分配邏輯的ROWID。此外,你可以為這樣的表建立第二個索引。

建立索引結構表也是用CREATE TABLE 命令加ORGANIZATION INDEX關鍵字來實現。但是,這樣的表在建立完後,你還必須為該表建立一個主鍵。

例子:

CREATE TABLE IOT_EXPAMPLE
(
Pk_col1 number(4),
Pk_col2 varchar2(10),
Non_pk_col1 varchar2(40),
Non_pk_col2 date,
CONSTRAINT pk_iot PRIMARY KEY( pk_col1, pk_col2)
)
ORGANIZATION INDEX
TABLESPACE INDEX
STORAGE( INITIAL 1M NEXT 512K PCTINCREASE 0 );

索引組織表有些限制:

  1. 不能使用唯一約束;
  2. 必須具有一個主鍵;
  3. 不能建立簇;
  4. 不能包含LONG型別列;
  5. 不支援分佈和複製。

提示:如果建立了索引組織表,則會在DBA_TABLES中的IOT_TYPE和IOT_NAME列上記錄有索引組織表的資訊。

四、總結

適當的使用索引可以提高資料檢索速度,可以給經常需要進行查詢的欄位建立索引。

oracle的索引分為5種:唯一索引,組合索引,反向鍵索引,點陣圖索引,基於函式的索引

建立索引的標準語法:
CREATE INDEX 索引名 ON 表名 (列名)
TABLESPACE 表空間名;

建立唯一索引:
CREATE unique INDEX 索引名 ON 表名 (列名)
TABLESPACE 表空間名;

建立組合索引:
CREATE INDEX 索引名 ON 表名 (列名1,列名2)
TABLESPACE 表空間名;

建立反向鍵索引:
CREATE INDEX 索引名 ON 表名 (列名) reverse
TABLESPACE 表空間名;

“TABLESPACE 表空間名” 可以省略

相關推薦

ORACLE索引索引建立修改刪除

一、簡介       索引是關係資料庫中用於存放每一條記錄的一種物件,主要目的是加快資料的讀取速度和完整性檢查。建立索引是一項技術性要求高的工作。一般在資料庫設計階段的與資料庫結構一道考慮。應用系統的效能直接與索引的合理直接有關 二、 語法 2.1 建立索

Oracle索引建立修改刪除

一、概念和作用      在oracle索引是一種供伺服器在表中快速查詢一個行的資料庫結構。合理使用索引能夠大大提高資料庫的執行效率。      在資料庫中建立索引主要有以下作用。   (1)快速存取資料。   (2)既可以改善資料庫效能,又可以保證列值的唯一性

ElasticSearch最佳入門實踐(六十)建立修改以及刪除索引

1、建立索引 建立索引的語法 PUT /my_index { "settings": { ... any settings ... }, "mappings": { "type_one": { ... any mappings ...

06 python元組(建立索引修改刪除內建函式)

python中的元組與列表類似,只不過元組中的元素不可刪除和修改,可以索引查詢,也可以將兩個元組組合,可以刪除整個元組。 - 格式 list1=[1,2,3,4,5] #列表使用方括號 tuple1=(1,2,3,4,5)

sqlserver表視圖索引(創建修改刪除)相關示例

sqlserver表、視圖、索引一、表相關1、創建USE [test] GO SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [dbo].[Ceshi]( [id] [int] NOT NULL, [name] [varch

Oracle 序列建立使用修改刪除

建立序列 CREATE SEQUENCE sequence_name [START WITH num] [INCREMENT BY increment] [MAXVALUE num|NOMAXVALUE] [MINVALUE num|NOMINVALUE] [CYCLE|NOCYCLE

oracle表按日期分割槽建立新增修改刪除

Oracle11G分割槽表   當表中的資料量不斷增大,查詢資料的速度就會變慢,應用程式的效能就會下降,這時就應該考慮對錶進行分割槽。表進行分割槽後,邏輯上表仍然是一張完整的表,只是將表中的資料在物理上存放到多個表空間(物理檔案上),這樣查詢資料時,不至於每次都掃描整張表。 作用:   Oracle的表

oracle job的建立修改刪除執行

https://blog.csdn.net/bing_tao/article/details/54019573?utm_source=blogxgwz0   -------------查詢JOB----------------- select job, what, next_da

python 2.5元組(訪問修改刪除索引擷取內建函式)

Python3 元組Python 的元組與列表類似,不同之處在於元組的元素不能修改。元組使用小括號,列表使用方括號。元組建立很簡單,只需要在括號中新增元素,並使用逗號隔開即可。如下例項:>>> tup1 =('Google','Runoob',1997,20

phpMyAdmin 安裝建立修改刪除資料庫及插入瀏覽搜尋資料表中的資料

phpMyAdmin是眾多MySQL圖形化管理工具中使用最廣泛的一種,不管是Windows還是Linux,都可以通過該管理工具可以對MySQL進行各種操作。 一、下載及安裝 使用者可以在官方網站上免費下載最新版本,免費下載 下載好後,把壓縮包解壓到apache的專案目錄中,開啟config

Oracle 建立修改刪除表等常規操作

建立表create table test01(id int not null,name varchar(8) not null,gender varchar2(2) not null,age int not null,address varchar2(20) default

mysql alter 語句用法,新增修改刪除欄位索引主鍵等

修改表名: ALTERTABLEadmin_user RENAMETO a_use //增加主鍵 altertable tabelname add new_field_id int(5) unsigned default 0 notnull auto_incr

在Linux下進入目錄目錄下建立修改刪除檔案所需許可權

首先,我們用root許可權建立一個目錄名為dir, 此時檔案擁有者對改目錄具有讀、寫和執行許可權,所屬組和other對改目錄具有讀和執行許可權。現在去除dir的所以許可權, 此時dir目錄的

oracle profile含義修改新增

復雜 user pts bsp max pro mit 規則 con profiles文件是口令和資源限制的配置集合,包括CPU的時間、I/O的使用、空閑時間、連接時間、並發會話數量、密碼策略等對於資源的使用profile可以做到控制會話級別或語句調用級別。oracle自帶

oracle字符集查看修改版本查看

子集 char csdn 日期 數據庫 instance 但是 lang pla 一、什麽是Oracle字符集 Oracle字符集是一個字節數據的解釋的符號集合,有大小之分,有相互的包容關系。ORACLE 支持國家語言的體系結構允許你使用本地化語言來存

模仿文件存儲方式來進行添加修改添加子類的操作。

nav urn 選中 round ssa 路徑 input rom src 結合Mysql和Php完成的一個簡單實例。 過程如下: ①.先連接數據庫,因為在多個頁面都會使用同一個連接,所以可以將連接數據庫的過程封裝成函數,方便各個頁面調用(include ‘‘).代碼格式如

oracle 新增修改 刪除字段

div sql 同時 one value 得到 rename 創建表 num 添加字段的語法:alter table tablename add (column datatype [default value][null/not null],….); 修改字段的語法:alt

oracle 資料庫表字段新增修改刪除等DDL操作

oracle 資料庫表字段新增、修改、刪除等操作 1. 建立表 -- Create table create table TB_PERMISSION_ORGANIZATION ( id VARCHAR2(150) not null, parent_id

oracle索引分析索引索引碎片整理

41.oracle索引,分析索引,索引碎片整理 概述 索引分為B樹索引和點陣圖索引。我們主要研究B樹索引,B樹索引如下圖(圖片源自網路):   索引是與表相關的一個可選結構,在邏輯上和物理上都獨立於表資料,索引能優化查詢,不能優化DM

SQL Server觸發器建立刪除修改檢視

教程貼士:本教程為大家介紹SQL Server觸發器建立、刪除、修改、檢視方法。     一:觸發器是一種特殊的儲存過程,它不能被顯式地呼叫,而是在往表中插入記錄﹑更新記錄或者刪除記錄時被自動地啟用。所以觸發器可以用來實現對錶實施複雜的完整性約束。   二:SQL Server