亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

 更新時(shí)間:2009年06月20日 20:03:29   作者:  
在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è)部門的信息。一般企業(yè)的部分也就十幾個(gè),最多不會(huì)超過(guò)一百個(gè)。這100條記錄對(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ò)10%到15%的話,那就沒(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ù)淖兏R蕴岣咚饕男Ч?
  三、 在一個(gè)表上創(chuàng)建多少索引合適?
  雖然說(shuō),在表上創(chuàng)建索引的數(shù)量沒(méi)有限制,但是決不是越多越好。也就是說(shuō),在創(chuàng)建索引這項(xiàng)事情上,1+1〉2往往不成立。有時(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)椋诟掠涗浀耐瑫r(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è)置索引??梢圆樵兿嚓P(guān)的動(dòng)態(tài)視圖,看看對(duì)于這張表的操作,是更新操作(包括更新、刪除、插入等等)占的比例大,還是查詢操作占的比例大。當(dāng)過(guò)多的索引已經(jīng)影響到更新操作的速度時(shí),則數(shù)據(jù)庫(kù)管理員就需要先禁用某些索引,以提高數(shù)據(jù)庫(kù)的性能。
  總之,在適當(dāng)?shù)谋怼⑦m當(dāng)?shù)牧猩辖⑦m當(dāng)?shù)乃饕?。這一句話包含的意思有很多,以上內(nèi)容只是一部分內(nèi)容。俗話說(shuō),師傅領(lǐng)進(jìn)門,修行靠自身。筆者在這里指能夠點(diǎn)到為止。一些具體的索引優(yōu)化內(nèi)容還是需要各位讀者在日常工作中去體會(huì)與總結(jié)。

相關(guān)文章

  • Oracle SQL樹(shù)形結(jié)構(gòu)查詢

    Oracle SQL樹(shù)形結(jié)構(gòu)查詢

    本文介紹Oracle中使用START WITH...CONNECT BY PRIOR子句實(shí)現(xiàn)遞歸查詢樹(shù)形結(jié)構(gòu)的方法,小伙伴們可以參考一下。
    2016-05-05
  • SQLPlus命令操作用法詳解

    SQLPlus命令操作用法詳解

    這篇文章主要介紹了SQLPlus命令操作用法詳解,本篇文章通過(guò)簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-08-08
  • 使用oracle修改表字段長(zhǎng)度的步驟

    使用oracle修改表字段長(zhǎng)度的步驟

    這篇文章主要介紹了如何使用oracle修改表字段長(zhǎng)度,本文僅僅簡(jiǎn)單介紹了如何使用oracle修改表字段長(zhǎng)度,而oracle提供了大量能使我們快速便捷地處理數(shù)據(jù)的函數(shù)和方法,需要的朋友可以參考下
    2023-07-07
  • Oracle數(shù)據(jù)庫(kù)服務(wù)器修改操作系統(tǒng)時(shí)間的注意事項(xiàng)詳解

    Oracle數(shù)據(jù)庫(kù)服務(wù)器修改操作系統(tǒng)時(shí)間的注意事項(xiàng)詳解

    在本篇文章里小編給大家整理的是一篇關(guān)于Oracle數(shù)據(jù)庫(kù)服務(wù)器修改操作系統(tǒng)時(shí)間的注意事項(xiàng)詳解,需要的朋友們可以參考下。
    2020-03-03
  • Oracle19c最新版保姆級(jí)別最詳細(xì)的安裝配置教程(2023年)

    Oracle19c最新版保姆級(jí)別最詳細(xì)的安裝配置教程(2023年)

    這篇文章主要給大家介紹了關(guān)于Oracle19c最新版保姆級(jí)別安裝配置教程的相關(guān)資料,19c作為原有序列的12c最后一個(gè)版本,可以說(shuō)是集大成的版本,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-07-07
  • oracle連接數(shù)據(jù)庫(kù)報(bào)錯(cuò)ORA-12170:TNS連接超時(shí)解決辦法

    oracle連接數(shù)據(jù)庫(kù)報(bào)錯(cuò)ORA-12170:TNS連接超時(shí)解決辦法

    這篇文章主要給大家介紹了關(guān)于oracle連接數(shù)據(jù)庫(kù)報(bào)錯(cuò)ORA-12170:TNS連接超時(shí)的解決辦法,ORA-12170是Oracle數(shù)據(jù)庫(kù)連接錯(cuò)誤,表示數(shù)據(jù)庫(kù)連接超時(shí),文中通過(guò)圖文介紹的非常詳細(xì),需要的朋友可以參考下
    2024-01-01
  • Oracle數(shù)據(jù)庫(kù)中的優(yōu)化方法

    Oracle數(shù)據(jù)庫(kù)中的優(yōu)化方法

    這篇文章主要給大家介紹了Oracle數(shù)據(jù)庫(kù)中的優(yōu)化方法,Oracle數(shù)據(jù)庫(kù)是當(dāng)前應(yīng)用最廣泛的大型數(shù)據(jù)庫(kù)之一,其系統(tǒng)結(jié)構(gòu)復(fù)雜,性能受多方面因素影響,其中查詢操作是影響其性能的關(guān)鍵因素,需要的朋友可以參考下
    2023-07-07
  • Oracle停止數(shù)據(jù)泵導(dǎo)入數(shù)據(jù)的方法詳解

    Oracle停止數(shù)據(jù)泵導(dǎo)入數(shù)據(jù)的方法詳解

    Oracle數(shù)據(jù)庫(kù)在使用的過(guò)程中常常會(huì)遇到這樣或那樣的問(wèn)題,而這些問(wèn)題常常又使我們感到很困惑,下面這篇文章主要給大家介紹了關(guān)于Oracle停止數(shù)據(jù)泵導(dǎo)入數(shù)據(jù)的相關(guān)資料,需要的朋友可以參考下
    2022-06-06
  • Oracle 的入門心得 強(qiáng)烈推薦

    Oracle 的入門心得 強(qiáng)烈推薦

    oracle的體系太龐大了,對(duì)于初學(xué)者來(lái)說(shuō),難免會(huì)有些無(wú)從下手的感覺(jué),什么都想學(xué),結(jié)果什么都學(xué)不好,所以把學(xué)習(xí)經(jīng)驗(yàn)共享一下,希望讓剛剛?cè)腴T的人對(duì)oracle有一個(gè)總體的認(rèn)識(shí),少走一些彎路。
    2009-05-05
  • ORACLE常用數(shù)值函數(shù)、轉(zhuǎn)換函數(shù)、字符串函數(shù)

    ORACLE常用數(shù)值函數(shù)、轉(zhuǎn)換函數(shù)、字符串函數(shù)

    本文并不準(zhǔn)備介紹全部的oracle函數(shù),當(dāng)前情勢(shì)下,俺也還沒(méi)這個(gè)時(shí)間,需要學(xué)習(xí)的東西太多了,要把多數(shù)時(shí)間花在學(xué)習(xí)經(jīng)常能用上的技術(shù)方面:),所以如果是準(zhǔn)備深入了解所有oracle函數(shù)的朋友,還是去關(guān)注:Oracle SQL Reference官方文檔更靠譜一些。
    2009-11-11

最新評(píng)論