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

正文內(nèi)容

oracle存儲過程開發(fā)規(guī)范與技巧-資料下載頁

2025-04-07 06:22本頁面
  

【正文】 Oracle 創(chuàng)建的用于實(shí)施主鍵和唯一鍵的完整性約束的索引。例如如下語句更改emp_ename 索引:ALTER INDEX emp_enameSTORAGE (PCTINCREASE 50)。不能更改存儲參數(shù)INITIAL 和MINEXTENTS ,給其他存儲參數(shù)新設(shè)置的值只會影響以后分配給該索引的分區(qū)。b) 重建索引不適當(dāng)?shù)暮Y分或被增加的增量可能產(chǎn)生索引碎片,為了消除或減小碎片可以重建或合并索引。重建索引時是將現(xiàn)存的索引作為數(shù)據(jù)源。用這種方法創(chuàng)建索引,允許修改存儲特征或?qū)⑺饕苿拥叫碌谋砜臻g?;诂F(xiàn)存數(shù)據(jù)源來重建索引會刪除額外數(shù)據(jù)塊的碎片。相對于刪除索引再用CREATE INDEX 語句來創(chuàng)建索引而言,重建現(xiàn)存的索引提供了更好的性。如下語句重建現(xiàn)存的索引emp_name:ALTER INDEX emp_name REBUILD。REBUILD 子句必須立即地緊跟在索引名之后并出現(xiàn)在任何其他選項之前它c(diǎn)) 合并索引在B樹葉子數(shù)據(jù)塊能被釋放重用的情況下,可以用如下語句將這些葉子數(shù)據(jù)塊合并:ALTER INDEX emp_ename COALESCE。d) 監(jiān)視索引使用Oracle 提供了一種監(jiān)視索引的方法以便決定它們正在被使用或沒被使用。如果一個索引目前沒被使用,那么,可將其刪除因而減少了不需要的語句負(fù)荷。為了開始監(jiān)視一個索引的使用發(fā)布如下語句:ALTER INDEX emp_ename MONITORING USAGE以后發(fā)布如下語句來停止該監(jiān)視:ALTER INDEX emp_ename NOMONITORING USAGE可用查詢視圖 V$OBJECT_USAGE 來查詢正在被監(jiān)視的索引,以便查看是否該索引已經(jīng)被使用。該視圖包含一個USED 列,其值是YES 或NO 取決于該索引在被監(jiān)視期間是否已經(jīng)被使用。該視圖還包含該監(jiān)視階段的開始和結(jié)束時間。還包含一個MONITORING列(YES/NO ),以標(biāo)識是否現(xiàn)在激活了使用監(jiān)視。每次指定MONITORING USAGE 時,V$OBJECT_USAGE 視圖都被針對指定的索引進(jìn)行重新設(shè)置,以前的使用信息被清除或重新設(shè)置,新的開始時間被記錄下來。當(dāng)指定NOMONITORING USAGE 又不執(zhí)行進(jìn)一步的監(jiān)視時,則該監(jiān)視階段的結(jié)束時間被記錄下來,在下一次發(fā)布ALTER INDEX MONITORING USAGE 語句之前,該視圖的信息保持不變。5) 刪除索引刪除索引權(quán)限:要想刪除索引則該索引必須包含在你的模式中,或你必須具有DROP ANY INDEX系統(tǒng)權(quán)限刪除索引原因:u 不再需要該索引u 該索引沒有為針對其相關(guān)的表所發(fā)布的查詢提供所期望的性能改善。例如表可能很小,或者盡管表中有許多行但只有很少的索引項。u 應(yīng)用沒有用該索引來查詢數(shù)據(jù)u 該索引已經(jīng)變成無效了必須在重建之前刪除該索引u 該索引已經(jīng)變得太碎了必須在重建之前刪除該索引刪除索引方式:,使用DROP INDEXDROP INDEX emp_ename。2. 刪除一個與約束相關(guān)的索引要刪除一個與約束相關(guān)的索引,必須停用或刪除該約束本身。3.刪除表也就自動也刪除了所有與其相關(guān)的索引刪除索引結(jié)果:刪除索引之后,該索引的段的所有盤區(qū)都返歸給包含它的表空間,并可用于表空間中的其他對象6) 察看索引信息下面的視圖顯示有關(guān)索引的信息:視圖說明DBA_INDEXESDBA 視圖描述數(shù)據(jù)庫中所有表上的索引,USER 視圖局限于用戶所擁有的索引,ALL 視圖描述用戶可以訪問的所有表上的索引。這些視圖中的某些列包含有由DBMS_STATS 包或ANALYZE 語句產(chǎn)生的統(tǒng)計數(shù)據(jù)。ALL_INDEXES USER_INDEXESDBA_IND_COLUMNS這些視圖描述表上的索引的列。這些視圖中的某些列包含有由DBMS_ATATS 包或ANALYZE 語句產(chǎn)生的統(tǒng)計數(shù)據(jù)。ALL_IND_COLUMNS USER_IND_COLUMNS DBA_IND_EXPRESSIONSDBA_IND_EXPRESSI這些視圖描述表上的基于函數(shù)的索引的表達(dá)式ALL_IND_EXPRESSIONSUSER_IND_EXPRESSIONSINDEX_STATS存儲最后一條ANALYZE INDEX VALIDATE STRUCTURE 語句所產(chǎn)生的信息INDEX_HISTOGRAMV$OBJECT_USAGE包含由ALTER INDEX MONITORING USAGE 語句所產(chǎn)生的索引使用的信息7) 屏蔽索引語句的執(zhí)行計劃中有不良索引時,可以人為地屏蔽該索引(通過添加計算或函數(shù)),方法:178。 數(shù)值型:在索引字段上加0,例如  select*fromempwhereemp_no+0=v_emp_no。178。 字符型:在索引字段上加‘’,例如  select*fromtg_cdr01wheremsisdn||’’=v_msisdn。8) 索引限制一個表中有幾百萬條數(shù)據(jù),對某個字段加了索引,但是查詢時性能并沒有什么提高,這主要可能是oracle的索引限制造成的。 oracle的索引有一些索引限制,在這些索引限制發(fā)生的情況下,即使已經(jīng)加了索引,oracle還是會執(zhí)行一次全表掃描,查詢的性能不會比不加索引有所提高,反而可能由于數(shù)據(jù)庫維護(hù)索引的系統(tǒng)開銷造成性能更差。 下面是一些常見的索引限制問題。 使用不等于操作符(, !=) 下面這種情況,即使在列dept_id有一個索引,查詢語句仍然執(zhí)行一次全表掃描 select * from dept where staff_num 1000。 但是開發(fā)中的確需要這樣的查詢,難道沒有解決問題的辦法了嗎? 有! 通過把用 or 語法替代不等號進(jìn)行查詢,就可以使用索引,以避免全表掃描:上面的語句改成下面這樣的,就可以使用索引了。 select * from dept shere staff_num 1000 or dept_id 1000。 使用 is null 或 is not null 使用is null 或is nuo null也會限制索引的使用,因?yàn)閿?shù)據(jù)庫并沒有定義null值。如果被索引的列中有很多null,就不會使用這個索引(除非索引是一個位圖索引,關(guān)于位圖索引,會在以后的blog文章里做詳細(xì)解釋)。在sql語句中使用null會造成很多麻煩。 解決這個問題的辦法就是:建表時把需要索引的列定義為非空(not null)使用函數(shù) 如果沒有使用基于函數(shù)的索引,那么where子句中對存在索引的列使用函數(shù)時,會使優(yōu)化器忽略掉這些索引。下面的查詢就不會使用索引: select * from staff where trunc(birthdate) = 39。01MAY8239。 但是把函數(shù)應(yīng)用在條件上,索引是可以生效的,把上面的語句改成下面的語句,就可以通過索引進(jìn)行查找。 select * from staff where birthdate (to_date(39。01MAY8239。) + )。 比較不匹配的數(shù)據(jù)類型 比較不匹配的數(shù)據(jù)類型也是難于發(fā)現(xiàn)的性能問題之一。下面的例子中,dept_id是一個varchar2型的字段,在這個字段上有索引,但是下面的語句會執(zhí)行全表掃描。 select * from dept where dept_id = 900198。 這是因?yàn)閛racle會自動把where子句轉(zhuǎn)換成to_number(dept_id)=900198,就是3所說的情況,這樣就限制了索引的使用。把SQL語句改為如下形式就可以使用索引 select * from dept where dept_id = 39。90019839。 使用like子句使用like子句查詢時,數(shù)據(jù)需要把所有的記錄都遍歷來進(jìn)行判斷,索引不能發(fā)揮作用,這種情況也要盡量避免。9) 索引優(yōu)化178。 經(jīng)常一起使用多個字段檢索記錄,組合索引比單索引更有效;178。 把最常用的列放在最前面,例:CREATE INDEX emp_index ON emp(ename,eid)在where條件中使用ename或ename,eid,查詢將使用索引,若僅用到eid字段,則索引無效178。 使用索引察看使用 SET AUTOTRACE ON 察看SQL語句使用索引情況,如下例:SQL SET AUTOTRACE ONSQL select * from emp where ename = 39。KING39。注:在數(shù)據(jù)庫服務(wù)器本機(jī)使用SQLPlus可以使用本功能 SET AUTOTRACE使用語法: SET AUTOT[RACE] {OFF | ON | TRACE[ONLY]} [EXP[LAIN]] [STAT[ISTICS]]注:關(guān)于索引的更多說明,參考 2. 分區(qū)表1) 定義分區(qū)表是對VLDB(Very Large DateBase,非常大的數(shù)據(jù)庫)的一種支持和維護(hù)方法。分區(qū)表允許將數(shù)據(jù)分成被稱為分區(qū)甚至子分區(qū)的更小的、更好管理的塊。表或索引的分區(qū)和子分區(qū)都共享相同的邏輯屬性(例如共享相同的列和約束定義)。分區(qū)操作對現(xiàn)存的應(yīng)用和運(yùn)行在分區(qū)表上的標(biāo)準(zhǔn)DML 語句來說是透明的。2) 使用分區(qū)的準(zhǔn)則1. 使用范圍分區(qū)要想將行映射到基于列值范圍的分區(qū)就使用范圍分區(qū)方法。當(dāng)數(shù)據(jù)可以被劃分成邏輯范圍時,如年度中的月份,這種類型的分區(qū)就有用了。當(dāng)數(shù)據(jù)在整個范圍中能被均等地劃分時性能最好。如果靠范圍的分區(qū)會由于不均等的劃分而導(dǎo)致分區(qū)在大小上明顯不同時,你就需要考慮其他的分區(qū)方法了。2. 使用列表分區(qū)當(dāng)你需要明確地控制如何將行映射到分區(qū)時,就使用列表分區(qū)方法。可以在每個分區(qū)的描述中為該分區(qū)列指定一列離散值。列表分區(qū)方法是特意為遵從離散值的模塊化數(shù)據(jù)劃分而設(shè)計的。3. 使用散列分區(qū)如果數(shù)據(jù)不那么容易進(jìn)行范圍分區(qū),但為了性能和管理的原因又想分區(qū)時,就使用散列分區(qū)方法。散列分區(qū)提供了一種在指定數(shù)量的分區(qū)中均等地劃分?jǐn)?shù)據(jù)的方法?;诜謪^(qū)鍵的散列值將行映射到分區(qū)中。創(chuàng)建和使用散列分區(qū)會給你提供了一種很靈活的放置數(shù)據(jù)的方法,因?yàn)槟憧梢酝ㄟ^在I/O 驅(qū)動器之間增加(或刪除)這些均等定量的分區(qū),來影響可用性和性能。4. 使用組合(復(fù)合)分區(qū)組合分區(qū)方法是在分區(qū)中使用范圍分區(qū)方法分區(qū)數(shù)據(jù),而在子分區(qū)中則使用散列分區(qū)方法。組合分區(qū)很適于歷史數(shù)據(jù)和條塊數(shù)據(jù)兩者,它改善了范圍分區(qū)及其數(shù)據(jù)放置的管理性,并提供了散列分區(qū)的并行機(jī)制的優(yōu)點(diǎn)。3) 創(chuàng)建分區(qū)1. 創(chuàng)建范圍分區(qū)創(chuàng)建范圍分區(qū)時,你須指定:l 分區(qū)方法:范圍(PARTITION BY RANGE)l 分區(qū)列l(wèi) 標(biāo)識分區(qū)邊界的分區(qū)描述l 表空間(可選)如下列子創(chuàng)建一個4 個分區(qū)的表。一個分區(qū)對應(yīng)一個季度的銷售情況列。sale_year sale_month 和sale_day 是分區(qū)列,即它們的值組成一個特殊的行的分區(qū)鍵。VALUES LESS THAN 子句決定分區(qū)邊界。分區(qū)鍵比在子句中指定的,已排序的值的列表還要小的,行將被存儲在分區(qū)中。每個分區(qū)都有名字(sales_q1, sales_q2,….),每個分區(qū)都在單獨(dú)的表空間(tsa, tsb,…)CREATE TABLE sales( invoice_no NUMBER,sale_year INT NOT NULL,sale_month INT NOT NULL,sale_day INT NOT NULL )PARTITION BY RANGE (sale_year, sale_month, sale_day)( PARTITION sales_q1 VALUES LESS THAN (1999, 04, 01)TABLESPACE tsa,PARTITION sales_q2 VALUES LESS THAN (1999, 07, 01)TABLESPACE tsb,PARTITION sales_q3 VALUES LESS THAN (1999, 10, 01)TABLESPACE tsc,PARTITION sales_q4 VALUES LESS THAN (2000, 01, 01)TABLESPACE tsd )。2. 創(chuàng)建列表分區(qū)當(dāng)創(chuàng)建列表分區(qū)時,你須指定:l 分區(qū)方法:列表(PARTITION BY LIST)l 分區(qū)列l(wèi) 分區(qū)描述。每個描述指定一串文字值(值的列表),它們是分區(qū)列(它們限定將被包括在分區(qū)中的行)的離散值。如下例子創(chuàng)建一個列表分區(qū)表。創(chuàng)建一個按地區(qū)進(jìn)行分區(qū)的表,sales_by_region 即按地理位置將州分組到一起:CREATE TABLE sales_by_region(deptno NUMBER,deptname VARCHAR2(20),quarterly_sales NUMBER(10, 2),state VARCHAR2(2))PARTITION BY LIST (state)(PARTITION q1_northwest VALUES (39。OR39。, 39。WA39。),PARTITION q1_southwest VALUES (39。AZ39。, 39。UT39。, 39。NM39。),PARTITION q1_northeast VALUES (39。NY39。, 39。VM39。, 39。NJ39。),PARTITION q1_southeast VALUES (39。FL39。, 39。GA39。),PARTITION q1_northcentral VALUES (39。SD39。, 39。WI39。),PARTITION q1_southcentral VALUES (39。OK39。, 39。TX39。))。
點(diǎn)擊復(fù)制文檔內(nèi)容
公司管理相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1