2013-06-25 136 views
4

我剛剛聽取了一個dba的說法,如果你用大寫字母命名你的所有函數,程序等,當數據庫中的工作負載很高時,數據庫將會更好地執行。這是真的嗎?我發現幾乎不可能相信。是否有任何基準或什麼證明他是對還是錯?Oracle中的大寫函數名稱比小寫字母快嗎?

我只認爲這個命名的東西在閱讀代碼時有價值,特別是對於一個團隊。更有可能的是,您可以成功修改遵循良好書寫慣例編寫的代碼,而不僅僅是隨機的東西。但這與計算機性能無關,它應該執行相同的操作。另外,如果是這樣,我不應該能夠調用名爲FUNC的函數,如funcFuncfunC

我認爲這句話很瘋狂,我是我錯了嗎?我的意思是,我不是數據庫專家,他是一名dba。

+6

聽起來像你的dba有幽默感。 – tbone

+0

@tbone這不是我的dba,但他是認真的!他讓人們修改他們的代碼來匹配這個! – Roger

+3

我認爲他/她只是希望人們不要在名稱周圍使用雙引號(真正用於命名理智,而不是表現)。所以這很好:創建函數my_func ...但這不是:創建函數「my_func」...如果你在dba_objects看,第一個(不帶引號)將被存儲爲MY_FUNC,而第二個將是小寫my_func – tbone

回答

5

默認情況下,Oracle標識符不區分大小寫。除非明確指出create a case-sensitive function name(通過將雙引號括起來),否則會產生一系列與性能無關的問題,Oracle會將函數名稱以大寫形式存儲在數據字典中。

CREATE FUNCTION myFunction ... 

CREATE FUNCTION MyFuNcTiOn ... 

CREATE FUNCTION MYFUNCTION .. 

CREATE FUNCTION myfunction ... 

都會創建一個,在數據字典中,在所有大寫字母命名MYFUNCTION功能。因爲它是一個不區分大小寫的標識符,您可以使用任何對您有意義的外殼來自由調用該函數。數據庫不知道你用來創建函數的外殼,所以它不可能影響性能。

+0

任何包含這些問題的鏈接?我很想知道這樣做會出現什麼問題。 – Roger

+0

@Roger - 添加了另一個SO線程的鏈接,討論了Oracle中區分大小寫和不區分大小寫的標識符。 –

+0

@Roger:在手冊中有記錄:http://docs.oracle.com/cd/E11882_01/server.112/e26088/sql_elements008.htm#i27561請參見標識符規則列表中的第9項。 –

2

您只能使用大寫實體名稱(不要超過30個字符)的唯一原因是避免在使用引號時使用引號。儘管我從未聽說過任何性能影響。

如果您的名字是FUNC,您可以稍後將其稱爲fUnCFunc(不含引號!)。

但是,如果您用引號將它稱爲func,那將是您可能使用的唯一名稱。

+0

即使如此,大寫並不是強制性的,你可以隨心所欲地做任何事情。 – Roger

相關問題