2013-06-25 178 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

相关问题