Oracle怎麼定義VARCHAR2 的長度

2021-10-21 10:37:20 字數 1046 閱讀 3442

從oracle官方文件上看到,優化記憶體開銷有這樣的表述:

機器翻譯結果如下:

翻譯中文

宣告4000個或更多字元的varchar2變數

varchar2當不確定表示式結果的大小時,可能需要分配大變數。您可以通過宣告varchar2較大的變數(例如32000)來節省記憶體,而不是僅僅通過指定256或1000來估計較高的變數。pl/ sql的優化使其可以輕鬆避免溢位問題,並且仍然可以節省記憶體。指定varchar2變數的大小超過4000個字元;pl / sql等待直到您分配了變數,然後才根據需要分配盡可能多的儲存。 理解

定義大的varchar2()型別,有利於pl/sql進行記憶體優化?

不解,求大神指點!

也看到一些例子,說定義過大,會帶來一些限制,主要有如下幾點:

1、導致索引超出字元限制

由於資料庫的限制(參見logical database limits),每個索引的字段的總長度不能超過75% * the database block size再減去some overhead的長度,由於有限制,所以欄位的長度也限制了索引欄位的大小

2、字段長度能夠起到一定的constraint作用,比如乙個字段長度要求是10個位元組,必須要設定為varchar2(10)。

3、影響程式執行時記憶體的需求

如果用到array fetch,那麼客戶端fetch 資料需要的記憶體是根據定義的字段的長度,所以大的字段會需要大的記憶體。比如10個varchar2(4000)字段,我要取100行,那麼就需要 400010100的記憶體,大約是4m,但是如果定義為varchar2(10),那麼就需要1010100的記憶體。

當然,還有自己的開發經驗,比如下游需要使用你的資料,如果人家是string型別或者char型別,看到你的varchar2(4000)就沒有了參考價值。

結合oracle的幫助文件,求指點!!!

oracle定義varchar2型別時,是根據實際定義好,還是統一定義大型別?

定義的長度過長,還有什麼影響。

ORACLE建立自定義函式返回varchar型別

需求描述 兩張表,如下,需要查詢tmp1表中id new在tmp2中的name 方法一 好處 簡單,直接sql展示 劣處 如果主表資料量太大,十幾億的話,效能會大大下降,此時建議第二種方法 select a.id old,to char wm concat distinct a.id new id ...

python怎麼定義常量 Python 定義常量

常量在編寫程式的時候,一旦設定就不能再進行變動,常量一種約定俗成的方式,所有字母大寫並用下劃線分隔單詞的方式 如max value,out time等 但是python沒有提供設定常量用法,需要自己自定義類實現常量功能。自定義類實現常量功能 這種辦法就是解決簡單用全大寫和下劃線定義固定變數無法解決篡...

oracle 陣列定義

集合 是具有相同定義的元素的聚合。oracle有兩種型別的集合 可變長陣列 varray 可以有任意數量的元素,但必須預先定義限制值。巢狀表 視為表中之表,可以有任意數量的元素,不需要預先定義限制值。在pl sql中是沒有陣列 array 概念的。但是如果程式設計師想用array的話,就得變通一下,...