奇怪的問題表現表的一個奇怪的情況我很英寸29分Oracle的VARCHAR2列
有選擇具有29 VARCHAR(255)列的表的所有列在任何noticable性能差異?
如果改爲varchar(50),性能是否會提高?
如果有問題,列中的大部分數據實際上少於30個字符。
奇怪的問題表現表的一個奇怪的情況我很英寸29分Oracle的VARCHAR2列
有選擇具有29 VARCHAR(255)列的表的所有列在任何noticable性能差異?
如果改爲varchar(50),性能是否會提高?
如果有問題,列中的大部分數據實際上少於30個字符。
這取決於。
如果您只是在沒有網絡流量的PL/SQL塊中查詢數據,假設兩種情況下的數據實際上都是相同的大小,這應該沒有關係。如果您將數據提取到PL/SQL變量中,您可能會使用略微更多的PGA內存,但它不太可能會在性能上產生顯着差異。
但是,如果您要通過網絡獲取數據,它可能會有所作爲。許多驅動程序最終會根據結果集的潛在大小(即255個字節或255個字符(取決於字符集,NLS_LENGTH_SEMANTICS和其他全球化樂趣)分配空間,這可能意味着您將分配5次以上客戶端機器上的RAM超過必要(這裏的「客戶端機器」可能指的是三層應用程序的中間層)。這反過來最終會影響業績。
根據您的用戶名,我傾向於懷疑您使用的是Java和JDBC。如果您使用的是Type 4 JDBC驅動程序,我傾向於打賭,您只會根據數據的實際大小來分配空間。另一方面,如果您使用的是JDBC-ODBC橋,我傾向於認爲ODBC驅動程序正在根據列的最大大小分配空間。這顯然取決於你使用的驅動程序 - 這是我個人受過教育的猜測,不是基於實際分析各種驅動程序的內存使用情況。
謝謝。今天我瞭解了JDBC驅動程序類型。禍是我。 :〜(看看我的jdbc jar,我推斷它是4型的!jar名爲ojdbc14-10.1.3.3.jar。我也得到了@ awrrpt.sql工作,它像磚塊一樣擊中了我 - 很有用但我是我不知道它的大部分意思是什麼!爲什麼!!! – JavaRocky 2011-03-23 01:01:39
是的,我使用類型4從我的jdbc url,它已經很薄。 – JavaRocky 2011-03-23 01:05:48