Oracle數(shù)據(jù)庫(kù)的常用字段的描述
所謂的自增字段,就是指隨著我們實(shí)際使用,Oracle數(shù)據(jù)庫(kù)就可以自動(dòng)增加相關(guān)的字段。這些字段的值一般都是沒(méi)有明確的相關(guān)含義,只用于一個(gè)唯一標(biāo)識(shí),這個(gè)字段一般也會(huì)設(shè)置成主鍵。
Oracle數(shù)據(jù)庫(kù)自增字段
如果應(yīng)用只針對(duì)Oracle數(shù)據(jù)庫(kù),而不考慮數(shù)據(jù)庫(kù)無(wú)關(guān)性,那么sequence無(wú)非是最好的一個(gè)選擇。對(duì)于以前用習(xí)慣MSSQL等其它數(shù)據(jù)庫(kù)的朋友來(lái)說(shuō),Oracle這種用法簡(jiǎn)直是太費(fèi)勁了,要花很大的功夫才能做好一個(gè)自增字段,但是正因?yàn)槿绱耍矌?lái)了其它數(shù)據(jù)庫(kù)不能相比的優(yōu)點(diǎn),舉例來(lái)說(shuō),一個(gè)訂單系統(tǒng),即有訂單頭,又有訂單行,一般是先插入訂單頭,再插入訂單行,對(duì)于MSSQL等數(shù)據(jù)庫(kù)的自增字段,只有插入后才知道具體的ID值是多少,那么寫(xiě)入后,還要返查一下這個(gè)字段值再給訂單行使用;而對(duì)于oracle來(lái)說(shuō),只要先從sequence里取出一個(gè)值來(lái),頭和行一起使用即可,最主要是的sequence的效果是非常高的,不需要擔(dān)心性能問(wèn)題。
Oracle數(shù)據(jù)庫(kù)彈性字段
在數(shù)據(jù)庫(kù)表結(jié)構(gòu)設(shè)計(jì)的時(shí)候,最好多留出幾個(gè)備用的字段來(lái),因?yàn)殡S著系統(tǒng)的使用,一般會(huì)有增加字段的需求。預(yù)留字段的好處是,只要需要的時(shí)候啟用即可,不需要進(jìn)行DDL操作,對(duì)數(shù)據(jù)庫(kù)后期維護(hù)的風(fēng)險(xiǎn)很低,并且一般的DDL操作,會(huì)造成級(jí)聯(lián)的VIEW/PACKAGE等程序失效,預(yù)留了彈性字段,則不會(huì)有這個(gè)問(wèn)題。
預(yù)留的字段也可以按類(lèi)型分成三種:字符串型,數(shù)值型及日期型,可以每個(gè)類(lèi)型預(yù)留10個(gè),或根據(jù)需要來(lái)決定,可以采用如下的樣式:
- NUMBER_ATTRIBUTE1
- STRING_ATTRIBUTE1
- DATE_ATTRIBUTE1
彈性字段如果不啟用,會(huì)不會(huì)占用過(guò)多的存儲(chǔ)空間呢,答案是否定的,因?yàn)樵谶@種大型數(shù)據(jù)庫(kù)的結(jié)構(gòu)中,只有一個(gè)字段真正被用到的時(shí)候,才會(huì)去占用實(shí)際的空間,否則它只是一個(gè)“說(shuō)明”,并不占用實(shí)際的空間,所以不會(huì)造成空間浪費(fèi)。
Oracle數(shù)據(jù)庫(kù)拆分字段
這并不是一個(gè)字段的類(lèi)型,而是指在表設(shè)計(jì)的時(shí)候,可以適當(dāng)?shù)陌岩粋€(gè)大表拆成不同的小表來(lái)存儲(chǔ),比如用戶(hù)表,可以包括登錄名,密碼,姓名,生日,等一系列的字段,在某些情況下,包括的會(huì)員屬性可能達(dá)到上百個(gè)之多。
在數(shù)據(jù)量小的時(shí)候,無(wú)論怎么樣的存儲(chǔ),都不會(huì)有性能問(wèn)題,但是當(dāng)數(shù)據(jù)量比較大的時(shí)候,就必須考慮性能問(wèn)題。如果索引比較合理,不管數(shù)據(jù)量多大,一般查詢(xún)速度都不會(huì)太慢,但是當(dāng)某些特別情況,不能使用索引的時(shí)候,就會(huì)產(chǎn)生FTS(所謂的全表掃描)。
那么掃描一個(gè)小表和掃描一個(gè)大表所占的時(shí)間就完全不一樣了,所以建議比較大的表分開(kāi)存儲(chǔ),把常用的幾個(gè)字段單獨(dú)提取出來(lái),這樣即便全表掃描,也能比較好的控制效率。
在使用的時(shí)候,只要主表和子表都有索引,把它們聯(lián)合起來(lái)查詢(xún),和一個(gè)真正的大表的效果基本上是一樣的,雖然性能肯定比一個(gè)真實(shí)的大表慢一點(diǎn),但是和另一方面的性能提升比較起來(lái),是值得的。
【編輯推薦】