真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

oracle表索引怎么做 表創(chuàng)建索引oracle

可不可以在Oracle表中有大量數(shù)據(jù)時(shí)創(chuàng)建索引,這樣做有沒(méi)有不好的影響?

oracle中視圖可以創(chuàng)建索引,沒(méi)有不好的影響,創(chuàng)建索引方法。

成都創(chuàng)新互聯(lián)公司是專業(yè)的灤州網(wǎng)站建設(shè)公司,灤州接單;提供網(wǎng)站建設(shè)、做網(wǎng)站,網(wǎng)頁(yè)設(shè)計(jì),網(wǎng)站設(shè)計(jì),建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行灤州網(wǎng)站開(kāi)發(fā)網(wǎng)頁(yè)制作和功能擴(kuò)展;專業(yè)做搜索引擎喜愛(ài)的網(wǎng)站,專業(yè)的做網(wǎng)站團(tuán)隊(duì),希望更多企業(yè)前來(lái)合作!

如下參考:

1.打開(kāi)Navicat,如下圖所示。

2.右鍵單擊oracle數(shù)據(jù)庫(kù),然后單擊[openconnection],如下圖所示。

3.單擊[other],然后單擊[index],以顯示oracle數(shù)據(jù)庫(kù)中所有已知的索引。

4.點(diǎn)擊“新建索引”進(jìn)入索引設(shè)計(jì)界面。

5.在[general]選項(xiàng)卡上,設(shè)置類型、表類型、跟蹤表名、列名等。

6.在[advanced]選項(xiàng)卡中,設(shè)置表空間、記錄等特殊選項(xiàng)。

7.點(diǎn)擊“保存”,輸入索引名,然后點(diǎn)擊“確定”。

oracle分區(qū)表怎么創(chuàng)建索引

方法如下:

Oracle中建立索引,會(huì)提高查詢速度: create index 索引名 on 表名(列名);

例如:

create index index_userid on tbl_detail(userid);

如何找數(shù)據(jù)庫(kù)表的主鍵字段的名稱?

SELECT * FROM user_constraints WHERE CONSTRAINT_TYPE='P' and table_name='AAA'; select * from dba_cons_columns where CONSTRAINT_NAME='SYS_AAA';

Oracle 在創(chuàng)建主鍵(可以不加constraint SYS_AAA),會(huì)為庫(kù)表自動(dòng)創(chuàng)建索引,

索引的列為主鍵列。 并且當(dāng)庫(kù)表某些列名或者庫(kù)表名改變時(shí)候,

Oracle自動(dòng)創(chuàng)建的索引SYS_AAA,中的索引列也會(huì)自動(dòng)更新(類似于視圖),并且SYS_AAA會(huì)與名字更改后的庫(kù)表還是保持索引關(guān)系。 關(guān)鍵系統(tǒng)庫(kù)表: desc dba_constraints desc dba_cons_columns

desc dba_indexes desc dba_ind_columns desc DBA_TAB_COLUMNS

例子1:更改庫(kù)表的列名

ALTER TABLE AAA RENAME COLUMN ID TO AAA_ID; create table AAA ( ID NUMBER(8), NAME CHAR(20),

constraint SYS_AAA primary key(ID) );

//查找約束名字

select c.CONSTRAINT_NAME,c.table_name,cc.COLUMN_NAME from user_constraints c, user_cons_columns cc

where c.constraint_name=cc.constraint_name and c.table_name ='AAA' AND C.CONSTRAINT_TYPE='P';

CONSTRAINT_NAME TABLE_NAME COLUMN_NAME

SYS_AAA AAA ID

//查找索引

select index_name,index_type,uniqueness from user_indexes where table_name='AAA'; INDEX_NAME INDEX_TYPE UNIQUENES

oracle建立索引

對(duì)三個(gè)字段建立索引:

create index Stuname on student(name);

create index Stusex on student(sex);

create index Stugrade on student(grade);

注意的問(wèn)題,考慮是不是要建立唯一索引(unique),如果有學(xué)號(hào)的話,可以考慮建立唯一索引引。

再就是對(duì)經(jīng)常查詢,但又相對(duì)穩(wěn)定的可以建立聚簇索引,提高查詢效率

Oracle索引技術(shù)之如何建立最佳索引

怎樣建立最佳索引? 1、明確地創(chuàng)建索引 create index index_name on table_name(field_name) tablespace tablespace_name pctfree 5 initrans 2 maxtrans 255 storage ( minextents 1 maxextents 16382 pctincrease 0 ); 2、創(chuàng)建基于函數(shù)的索引 常用與UPPER、LOWER、TO_CHAR(date)等函數(shù)分類上,例: create index idx_func on emp(UPPER(ename)) tablespace tablespace_name; 3、創(chuàng)建位圖索引 對(duì)基數(shù)較小,且基數(shù)相對(duì)穩(wěn)定的列建立索引時(shí),首先應(yīng)該考慮位圖索引,例: create bitmap index idx_bitm on class (classno) tablespace tablespace_name; 4、明確地創(chuàng)建唯一索引 可以用create unique index語(yǔ)句來(lái)創(chuàng)建唯一索引,例: create unique index dept_unique_idx on dept(dept_no) tablespace idx_1; 5、創(chuàng)建與約束相關(guān)的索引 可以用using index字句,為與unique和primary key約束相關(guān)的索引,例: alter table table_name add constraint PK_primary_keyname primary key(field_name) using index tablespace tablespace_name; 如何創(chuàng)建局部區(qū)索引? 1)基礎(chǔ)表必須是分區(qū)表 2)分區(qū)數(shù)量與基礎(chǔ)表相同 3)每個(gè)索引分區(qū)的子分區(qū)數(shù)量與相應(yīng)的基礎(chǔ)表分區(qū)相同 4)基礎(chǔ)表的自分區(qū)中的行的索引項(xiàng),被存儲(chǔ)在該索引的相應(yīng)的自分區(qū)中,例如 create index TG_CDR04_SERV_ID_IDX on TG_CDR04(SERV_ID) Pctfree 5 Tablespace TBS_AK01_IDX Storage( MaxExtents 32768 PctIncrease 0 FreeLists 1 FreeList Groups 1 ) local / 如何創(chuàng)建范圍分區(qū)的全局索引? 基礎(chǔ)表可以是全局表和分區(qū)表 create index idx_start_date on tg_cdr01(start_date) global partition by range(start_date) (partition p01_idx vlaues less than ('0106') partition p01_idx vlaues less than ('0111') ... partition p01_idx vlaues less than ('0401')) / 如何重建現(xiàn)存的索引? 重建現(xiàn)存的索引的當(dāng)前時(shí)刻不會(huì)影響查詢 重建索引可以刪除額外的數(shù)據(jù)塊 提高索引查詢效率 alter index idx_name rebuild nologging; 對(duì)于分區(qū)索引 alter index idx_name rebuild partition partition_name nologging; 刪除索引的原因? 1)不再需要的索引 2)索引沒(méi)有針對(duì)其相關(guān)的表所發(fā)布的查詢提供所期望的性能改善 3)應(yīng)用沒(méi)有用該索引來(lái)查詢數(shù)據(jù) 4)該索引無(wú)效,必須在重建之前刪除該索引 5)該索引已經(jīng)變的太碎了,必須在重建之前刪除該索引 語(yǔ)句: drop index idx_name; drop index idx_name partition partition_name; 建立索引的代價(jià)? 基礎(chǔ)表維護(hù)時(shí),系統(tǒng)要同時(shí)維護(hù)索引,不合理的索引將嚴(yán)重影響系統(tǒng)資源, 主要表現(xiàn)在CPU和I/O上。

在Oracle中合理創(chuàng)建數(shù)據(jù)庫(kù)的索引

在Oracle數(shù)據(jù)庫(kù)中 創(chuàng)建索引雖然比較簡(jiǎn)單 但是要合理的創(chuàng)建索引則比較困難了 筆者認(rèn)為 在創(chuàng)建索引時(shí)要做到三個(gè)適當(dāng) 即在適當(dāng)?shù)谋砩?適當(dāng)?shù)牧猩蟿?chuàng)建適當(dāng)數(shù)量的索引 雖然這可以通過(guò)一句話來(lái)概括優(yōu)化的索引的基本準(zhǔn)則 但是要做到這一點(diǎn)的話 需要數(shù)據(jù)庫(kù)管理員做出很大的努力 具體的來(lái)說(shuō) 要做到這個(gè)三個(gè)適當(dāng)有如下幾個(gè)要求

一 根據(jù)表的大小來(lái)創(chuàng)建索引

雖然給表創(chuàng)建索引 可以提高查詢的效率 但是數(shù)據(jù)庫(kù)管理員需要注意的是 索引也需要一定的開(kāi)銷的 為此并不是說(shuō)給所有的表都創(chuàng)建索引 那么就可以提高數(shù)據(jù)庫(kù)的性能 這個(gè)認(rèn)識(shí)是錯(cuò)誤的 恰恰相反 如果不管三七二十一 給所有的表都創(chuàng)建了索引 那么其反而會(huì)給數(shù)據(jù)庫(kù)的性能造成負(fù)面的影響 因?yàn)榇藭r(shí)濫用索引的開(kāi)銷可能已經(jīng)遠(yuǎn)遠(yuǎn)大于由此帶來(lái)的性能方面的收益 所以筆者認(rèn)為 數(shù)據(jù)庫(kù)管理員首先需要做到 為合適的表來(lái)建立索引 而不是為所有的表建立索引

一般來(lái)說(shuō) 不需要為比較小的表創(chuàng)建索引 如在一個(gè)ERP系統(tǒng)的數(shù)據(jù)庫(kù)中 department表用來(lái)存儲(chǔ)企業(yè)部門(mén)的信息 一般企業(yè)的部分也就十幾個(gè) 最多不會(huì)超過(guò)一百個(gè) 這 條記錄對(duì)于人來(lái)說(shuō) 可能算是比較多了 但是對(duì)于計(jì)算機(jī)來(lái)說(shuō) 這給他塞塞牙縫都還不夠 所以 對(duì)類似的小表沒(méi)有必要建立索引 因?yàn)榧词菇⒘怂饕?其性能也不會(huì)得到很大的改善 相反索引建立的開(kāi)銷 如維護(hù)成本等等 要比這個(gè)要大 也就是說(shuō) 付出的要比得到的多 顯然違反常理

另外 就是對(duì)于超大的表 也不一定要建立索引 有些表雖然比較大 記錄數(shù)量非常的多 但是此時(shí)為這個(gè)表建立索引并一定的合適 如系統(tǒng)中有一張表 其主要用來(lái)保存數(shù)據(jù)庫(kù)中的一些變更信息 往往這些信息只給數(shù)據(jù)庫(kù)管理員使用 此時(shí)為這張表建立索引的話 反而不合適 因?yàn)檫@張表很少用到 只有在出問(wèn)題的時(shí)候才需要查看 其次其即使查看 需要查詢的紀(jì)錄也不會(huì)很多 可能就是最近一周的更新記錄等等 對(duì)于對(duì)于一些超大的表 建立索引有時(shí)候往往不能夠達(dá)到預(yù)計(jì)的效果 而且在打表上建立索引 其索引的開(kāi)銷要比普通的表大的多 那么到底是否給大表建立索引呢?筆者認(rèn)為 主要是看兩個(gè)方面的內(nèi)容 首先是需要關(guān)注一下 在這張大表中經(jīng)常需要查詢的記錄數(shù)量 一般來(lái)說(shuō) 如果經(jīng)常需要查詢的數(shù)據(jù)不超過(guò) %到 %的話 那就沒(méi)有必要為其建立索引的必要 因?yàn)榇藭r(shí)建立索引的開(kāi)銷可能要比性能的改善大的多 這個(gè)比例只是一個(gè)經(jīng)驗(yàn)的數(shù)據(jù) 如果數(shù)據(jù)庫(kù)管理員需要得出一個(gè)比較精確的結(jié)論 那么就需要進(jìn)行測(cè)試分析 即數(shù)據(jù)庫(kù)管理員需要測(cè)試一下全表掃描的時(shí)間 看看其是否比建立索引后的查詢時(shí)間要長(zhǎng)或者短 如果是長(zhǎng)的話 則說(shuō)明有建立索引的必要 但是如果沒(méi)有的話 則說(shuō)明還是全表掃描速度來(lái)的快 此時(shí)也就沒(méi)有必要建立索引了

總之 在考慮是否該為表建立索引時(shí) 一般來(lái)說(shuō)小表沒(méi)有建立索引的必要 而對(duì)于打表的話 則需要進(jìn)行實(shí)際情況實(shí)際分析 簡(jiǎn)單一點(diǎn)的 可以根據(jù)大致的比率來(lái)確定 如果要精確一點(diǎn)的 則可以進(jìn)行全表掃描性能分析 以判斷建立索引后是否真的如預(yù)期那樣改善了數(shù)據(jù)庫(kù)性能

二 根據(jù)列的特征來(lái)創(chuàng)建索引

列的特點(diǎn)不同 索引創(chuàng)建的效果也不同 數(shù)據(jù)庫(kù)管理員需要了解為哪些列創(chuàng)建索引可以起到事倍功半的效果 同時(shí)也需要了解為哪些列創(chuàng)建索引反而起到的是事倍功半的效果 這有利于他們了解到底給為怎么樣的字段建立索引

根據(jù)筆者的經(jīng)驗(yàn) 往往為如下特征的列創(chuàng)建索引能夠起到比較明顯的效果 如對(duì)于一些重復(fù)內(nèi)容比較少的列 特別是對(duì)于那些定義了唯一約束的列 在這些列上建立索引 往往可以起到非常不錯(cuò)的效果 如對(duì)于一些null值的列與非Null值的列混合情況下 如果用戶需要經(jīng)常查詢所有的非Null值記錄的列 則最好為其設(shè)置索引 如果經(jīng)常需要多表連接查詢 在用與連接的列上設(shè)置索引可以達(dá)到事半功倍的效果

可見(jiàn) 索引設(shè)置的是否恰當(dāng) 不僅跟數(shù)據(jù)庫(kù)設(shè)計(jì)架構(gòu)有關(guān) 而且還跟企業(yè)的經(jīng)濟(jì)業(yè)務(wù)相關(guān) 為此 對(duì)于一些套裝軟件 雖然一開(kāi)始數(shù)據(jù)庫(kù)管理員已經(jīng)做了索引的優(yōu)化工作 但是隨著后來(lái)經(jīng)濟(jì)數(shù)據(jù)的增加 這個(gè)索引的效果會(huì)越來(lái)越打折扣 這主要是因?yàn)橛涗浀谋砘绊懙搅怂饕齼?yōu)化的效果 所以筆者建議各位數(shù)據(jù)庫(kù)管理員 即使采用的是大牌軟件公司的套裝軟件 也需要隔一段時(shí)間 如一年 對(duì)數(shù)據(jù)庫(kù)的索引進(jìn)行優(yōu)化 該去掉的去掉 該調(diào)整的調(diào)整 以提高數(shù)據(jù)庫(kù)的性能

如在數(shù)據(jù)庫(kù)中有一張表是用來(lái)保存用戶信息的 其中有個(gè)字段身份證號(hào)碼 這是一個(gè)唯一的字段 在數(shù)據(jù)庫(kù)設(shè)計(jì)時(shí) 給這個(gè)字段創(chuàng)建了索引 但是當(dāng)這個(gè)數(shù)據(jù)庫(kù)投入使用之后 用戶不怎么輸入用戶的身份證號(hào)碼 而且平時(shí)也基本不按這個(gè)號(hào)碼來(lái)進(jìn)行查詢 當(dāng)記錄月來(lái)月多時(shí) 這個(gè)身份證號(hào)碼上的索引字段不但不能夠改善數(shù)據(jù)庫(kù)的查詢性能 反而成了雞肋 對(duì)于這些有很多NULL值的列 而且不會(huì)經(jīng)常查詢所有的非NULL值記錄的列 數(shù)據(jù)庫(kù)管理員要下決心 即使清除這些列上的索引

所以說(shuō)索引的優(yōu)化與調(diào)整是一個(gè)動(dòng)態(tài)的過(guò)程 并不是說(shuō)數(shù)據(jù)庫(kù)設(shè)計(jì)好之后就不需要經(jīng)過(guò)調(diào)整 數(shù)據(jù)庫(kù)管理員往往需要根據(jù)記錄的變化情況 來(lái)進(jìn)行適當(dāng)?shù)淖兏?以提高索引的效果

三 在一個(gè)表上創(chuàng)建多少索引合適?

雖然說(shuō) 在表上創(chuàng)建索引的數(shù)量沒(méi)有限制 但是決不是越多越好 也就是說(shuō) 在創(chuàng)建索引這項(xiàng)事情上 + 〉 往往不成立 有時(shí)候 創(chuàng)建索引越多 其可能會(huì)得到適得其反的效果 那么在一個(gè)表上 到底給創(chuàng)建多少索引合適呢?這個(gè)沒(méi)有一個(gè)明確的標(biāo)準(zhǔn) 而是需要數(shù)據(jù)庫(kù)管理員根據(jù)實(shí)際的用途以及數(shù)據(jù)庫(kù)中記錄的情況 來(lái)進(jìn)行判斷

通常來(lái)說(shuō) 表的索引越多 其查詢的速度也就越快 但是 表的更新速度則會(huì)降低 這主要是因?yàn)楸淼母?如往表中插入一條記錄)速度 反而隨著索引的增加而增加 這主要是因?yàn)?在更新記錄的同時(shí)需要更新相關(guān)的索引信息 為此 到底在表中創(chuàng)建多少索引合適 就需要在這個(gè)更新速度與查詢速度之間取得一個(gè)均衡點(diǎn) 如對(duì)于一些數(shù)據(jù)倉(cāng)庫(kù)或者決策型數(shù)據(jù)庫(kù)系統(tǒng) 其主要用來(lái)進(jìn)行查詢 相關(guān)的記錄往往是在數(shù)據(jù)庫(kù)初始化的時(shí)候倒入 此時(shí) 設(shè)置的索引多一點(diǎn) 可以提高數(shù)據(jù)庫(kù)的查詢性能 同時(shí)因?yàn)橛涗洸辉趺锤?所以索引比較多的情況下 也不會(huì)影響到更新的速度 即使在起初的時(shí)候需要導(dǎo)入大量的數(shù)據(jù) 此時(shí)也可以先將索引禁用掉 等到數(shù)據(jù)導(dǎo)入完畢后 再啟用索引 可以通過(guò)這種方式來(lái)減少索引對(duì)數(shù)據(jù)更新的影響 相反 如果那些表中經(jīng)常需要更新記錄 如一些事務(wù)型的應(yīng)用系統(tǒng) 數(shù)據(jù)更新操作是家常便飯的事情 此時(shí)如果在一張表中建立過(guò)多的索引 則會(huì)影響到更新的速度 由于更新操作比較頻繁 所以對(duì)其的負(fù)面影響 要比查詢效率提升要大的多 此時(shí)就需要限制索引的數(shù)量 只在一些必要的字段上建立索引

筆者在平時(shí)數(shù)據(jù)庫(kù)優(yōu)化時(shí) 往往會(huì)根據(jù)這些表的用途來(lái)為列設(shè)置索引 可以查詢相關(guān)的動(dòng)態(tài)視圖 看看對(duì)于這張表的操作 是更新操作(包括更新 刪除 插入等等)占的比例大 還是查詢操作占的比例大 當(dāng)過(guò)多的索引已經(jīng)影響到更新操作的速度時(shí) 則數(shù)據(jù)庫(kù)管理員就需要先禁用某些索引 以提高數(shù)據(jù)庫(kù)的性能

lishixinzhi/Article/program/Oracle/201311/18407

Oracle創(chuàng)建索引SQL簡(jiǎn)單的例子,在表中的指定字段和如何使用索引呢?

create index index_name on table_name(column_name) ;\x0d\x0a只要你查詢使用到建了索引的字段,一般都會(huì)用到索引。 \x0d\x0a \x0d\x0a--創(chuàng)建表\x0d\x0acreate table aaa\x0d\x0a(\x0d\x0a a number,\x0d\x0a b number\x0d\x0a);\x0d\x0a--創(chuàng)建索引\x0d\x0acreate index idx_a on aaa (a);\x0d\x0a--使用索引\x0d\x0aselect * from aaa where a=1;\x0d\x0a這句查詢就會(huì)使用索引 idx_a


新聞標(biāo)題:oracle表索引怎么做 表創(chuàng)建索引oracle
網(wǎng)頁(yè)地址:http://weahome.cn/article/dooopch.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部