Oracle数据库查询十个小技巧

Oracle数据库查询十个小技巧
Oracle数据库查询十个小技巧

第一个技巧:利用连接符连接多个字段。

如在员工基本信息表中,有员工姓名、员工职位、出身日期等等。如果现在视图中这三个字段显示在同一个字段中,并且中间有分割符。如我现在想显示的结果为“经理Victor出身于1976年5月3日”。这该如何处理呢?其实,这是比较简单的,我们可以在Select查询语句中,利用连接符把这些字段连接起来。

如可以这么写查询语句:

SELECT员工职位||?? ||员工姓名||?出身于?||出身日期as 员工出身信息FROM 员工基本信息表;

通过这条语句就可以实现如上的需求。也就是说,我们在平时查询中,可以利用||连接符把一些相关的字段连接起来。这在报表视图中非常的有用。如笔者以前在设计图书馆管理系统的时候,在书的基本信息处有图书的出版社、出版序列号等等内容。但是,有时会在打印报表的时候,需要把这些字段合并成一个字段打印。为此,就需要利用这个连接符把这些字段连接起来。而且,利用连接符还可以在字段中间加入一些说明性的文字,以方便大家阅读。如上面我在员工职位与员工姓名之间加入了空格;并且在员工姓名与出身日期之间加入了出身于几个注释性的文字。这些功能看起来比较小,但是却可以大大的提高内容的可读性。这也是我们在数据库设计过程中需要关注的一个内容。

总之,令后采用连接符,可以提高我们报表的可读性于灵活性。

第二个技巧:取消重复的行。

如在人事管理系统中,有员工基本信息基本表。在这张表中,可能会有部门、职位、员工姓名、身份证件号码等字段。若查询这些内容,可能不会有重复的行。但是,我若想知道,在公司内部设置了哪些部门与职位的时候,并且这些部门与职位配置了相关人员。此时,又该如何查询呢?

若我现在直接查询部门表,其可以知道系统中具体设置了哪些部门与职位。但是,很有可能这些部门或者职位由于人事变动的关系,现在已经没有人了。所以,这里查询出来的是所有的部门与职位信息,而不能够保证这个部门或者职位一定有职员存在。也就是说,这不能够满足于我们上面的要求。

若我现在直接从员工信息表中查询,虽然可以保证所查询出来的部门与职位信息,一定有员工信息的存在。但是,此时查询出来的部门与职位信息会有重复的行。如采购部门分工合作,可能会有采购采购小组长。此时,在查询出来的部门与职位的信息中,就会有三条重复的记录。

所以,以上两种处理方式,都不能够百分之百的满足企业用户的需求。此时,我们其实可以利用一个DISTINCT函数,来消除其中查询出来的重复行。

如我们可以利用SELECT DISTINCT 部门信息,职位信息FROM 员工基本信息表。通过这条加了DISTINCT约束的查询语句,不但可以查询出所有有员工的职位与部门信息,而且,会把重复的记录过滤掉,从而提高可阅读性。

所以,在数据库设计过程中,特别是在查询语句的使用中,这个函数特别有用。

第三个技巧:勤用WHERE语句。

我们都知道,数据库查询效率高不高,是我们评价数据库设计好坏的一个重要标准。毋庸置疑,在数据库查询中勤用Where条件语句,是提高数据库查询性能的一个很重要的手段之一。特别是在设计到比较大的表中查询符合条件的记录过程中,利用WHERE条件语句加以限制,可以大幅度的提高查询的响应速度。

如在图书馆管理系统中,现在有人想查询“注册会计师”辅导用书的时候,虽然不在书的类别或者名称中输入“注册会计师”,先查询出全部的纪录,然后再一条条的看是否有相关的书籍信息,也是可行的。但是,这么处理的话,一方面系统响应的速度会非常的慢,因为里面记录很多。另一方面,查询的结果看起来也会非常的头疼。

其实,我们只需要在查询中加入一些查询的参数,利用Where条件语句加以限制,则即可以提高数据库响应的速度,也可以找出最符合用户需求的数据。

另外,我也接触过一些在Oracle数据库上设计的平台型管理软件,他们可以自定义相关的报表。在报表设计中,只要用户在前台设计平台中,选中“大表查询”的话,则这个平台会在生成报表的时候,自动应用Where条件语句,以提高前台系统从数据库查询数据的效率。

所以,笔者认为在Oracle数据库系统设计中,要勤于使用Where 语句。利用Where语句来提高数据库查询的效率。

第四个技巧:灵活使用COUNT函数。

在查询处理的时候,COUNT函数可以说是我们应用的比较多的函数之一。如我们有时候需要统计员工的人数、统计图书的种类数的时候,都需要使用到这个函数。不过,这个函数很多人可能会用,但是到灵活应用的地步,还是有一点差距。

下面笔者就COUNT函数的一些应用技巧谈谈自己的心得。

一是要灵活放置COUNT函数的位置,因为利用COUNT函数统计记录数的时候,是会考虑空行的记录的。如在数据表中一般有序列字段与其它的有意义字段两类。有时候可能序列字段中有内容而其它字段中没有内容,则在利用COUNT函数统计记录数量的时候,会把这个空记录也考虑进去。很明显,则就会发生统计的错误。所以,这个COUNT 函数该放在哪个位置上,还是比较讲究的。一般的话,笔者试建议不要放在序列号字段上,而要放在一些关键的实体字段中。如统计员工人数的时候,则就可以放在员工姓名或者编号上等等。

二是灵活跟其它函数搭配使用。如在上面的例子中,笔者谈到有时候用户需要知道现在有员工编制的部门与职位有哪一些,我们可以利用DISTINCT函数来找出具体的部门。但是,我现在只想知道有编制的部门与职位具体有多少,此时,我们也可以利用COUNT 与DISTINCT函数结合应用,找出我们所需要的数据。在COUNT函数中,可以指定ALL 与DISTINCT选项。默认的情况下,是ALL选项,表示统计所有的行,其中也包括重复的行。而DISTINCT就表示只统计不重复的行。可见,

COUNT函数跟其它函数搭配使用的话,可以简化我们的查询语句,提高查询效率。

第五个技巧:只查询时必须的字段。

有时候,用户不同的查询需求都要用到同一张表。如在员工信息表中包含了很多内容。有时候用户想要知道正式员工有多少;管理层员工有多少;生产线员工又有哪些;或者想知道合同即将到期的员工有哪些。为此,就遇到一个问题,因为这些内容基本上都是在同一张表中,那是在同一个视图中实现,而是根据需求不同,设计不同的视图呢?

若单从技术上考虑,两这都是可以实现的,不会有多大的难度。但是,若是从数据库性能上考虑在,则还是采用不同的视图来实现不同的需求为好。

一方面,若从安全方面讲,则可以根据不同的视图来控制相关的访问权限。可见,把视图细化,在权限控制上则会更加的灵活。

另一方面,数据的查询效率,跟数据内容的多少也有非常密切的关系。如在查询员工合同到期信息的时候,一般不需要员工的地址信息等等。若把这个信息也查询出来的话,由于这个字段比较长,就会花费比较长的时间。所以,在数据库设计中,我们要学会根据用户不同的需求,设计不同的视图。虽然可能这在设计的时候会比较花时间,但是,在确可以提高数据库的性能与安全性。这笔生意还是划得来的。

第六个技巧:合理处理NULL字段。

Null字段在数据库中是一个比较特殊的字段。Null字段表示未知值或者说缺少数据,注意若某个字段的值为Null,则这个字段即不是空格,

也不是0。当插入记录的时候,若这个字段没有被赋值,而且也没有默认值的话,则这个字段系统默认给他的值就是“Null”。

由于这个值比较特殊,在查询的时候,及时经验丰富的数据库管理员,有时候在处理起来的时候,也会发生错误。为此,笔者在这里总结一些,在数据库查询的时候,关于这个空字段查询的一些需要注意的地方。

一是要注意NULL字段的数字运算问题。

如现在在一个薪资管理系统中,有一张薪资表,其中有基本工资与加班工资两个字段。若某个用户的基本工资为2000,而其加班工资没有。在输入这条记录的时候,由于加班工资这个字段中,没有输入数据,而且在数据库设计的时候,也没有个这个字段设置0的默认值。所以,当这条记录保存的时候,数据库系统会给这个字段自动赋值,这个字段的值就为NULL。

若我们用Select语句查询这条记录的时候,其加班工资这个字段显示的数据是空的。看起来好像是空格,而实际上其存储的不是空格。此时,我们若利用查询语句想知道,这个员工的总的工资(即加班工资加上基本工资)为多少的时候会有什么结果呢?

我们可以利用Select 员工姓名,基本工资,加班工资,基本工资+加

班工资as 总工资FROM 员工薪资表; 我们可以通过这条语句来查询这个员工总的工资是多少。但是,这条语句会查询出我们想要的结果吗?我们执行一下这条语句,结果我们会发现,得出的结果跟我们想象的大相径庭。最后显示的总工资一栏中,为空格。

原来,Oracle数据库设计中,若一个NULL字段跟其他字段进行四则运算时,其显示的结果都为空。所以,若一个字段为NUU,则无论加减乘除,最后其结果都返回的施NULL值。这显然跟我们想象的不同。

针对这种情况,我们该如何处理呢?在数据库设计过程中,主要有两种处理方法。

一是在设计表的时候,对于这些需要参与运算的字段,要设置默认值。如可以把这个字段的默认值设置为0。则当添加这条记录的时候,即使前台用户没有给其设置值。在保存数据的时候,系统也会给其默认值0。如此的话,在进行四则运算的时候,才可能得到我们想要的值。

二是在查询的时候,需要考虑到这个NULL值的影响。有时候,若数据库中已经有记录,则不能够改变数据库字段的默认值。遇到这种情况,若我们需要对NULL字段与数字字段进行四则运算的时候,又该如何处理呢?此时,我们就需要在查询的时候,给NULL字段赋0的值。具体我们可以在查询语句中,如此定义。Select 员工姓名,基本工资,加班工资,基本工资+NVL(加班工资,0) as 总工资FROM 员工薪资表;如此的话,当加班工资的值为NULL的时候,则系统在运算的时候,会把其当作0来处理。这么处理,我们就可以得到我们所想要的结果。不过一般情况下,这一种处理方式是不得已而为之的。最好的是,在数据库表设计的时候,就给相关的字段设置0的默认值。

另外,还有一个函数NVL2跟NVL函数功能类似,只是其多了一个参数而已,其表达式为NVL2(参数1,参数2,参数3)。它的含义是,当参数1不为空值时,则返回的值为参数2;当参数1是空值时,则范围

的是参数3。若用这个函数实现NVL函数的目的时,则就需要如此改写上面这个案例的函数参数写法:NAV2 (加班工资,基本工资+加班工资,基本工资)。可见,两个函数有异曲同工之妙。具体采用哪种函数为好,则就需要根据数据库管理员的爱好来选择了。

二是如何查询NULL字段。

如果现在有一张员工基本信息表,其中有一个身份证号码的字段。现在若用户想知道,有哪些员工还没有记录身份证号码信息,该如何做呢?由于这个NULL字段不为空格或者0。若我们在查询条件语句中,利用?0?或者??(空格)作为查询条件的话,是查不到我们所需要的结果的。此时,在数据库中,提供了一个专门用户查询NULL字段记录的函数IS NULL。若我们现在想知道哪些员工没有注明身份证信息时,就可以利用如下的语句来实现。

Select 员工姓名,身份证号码from 员工基本信息表where 身份证号码is not null;

通过以上这条语句就可以实现查找身份证件为空的员工信息的目的。

第七个技巧:多多利用模糊查询。

在应用系统设计的时候,若让用户完整的输入全部查询条件,这个要求对于普通用户来说,过于苛刻。做过软件项目培训或者实施的时候,出于种种原因,用户在查询的时候,往往只输入部分的输入条件。遇到这种情况的时候,就需要在查询设计的时候,实现模糊查询。如此的话,即使用户输入的查询条件不全,也可以查询出相关的内容。

如用户在查询某个产品信息的时候,其可能不记得某个产品的具体名称,只知道其叫做端子,而其他具体的信息不清楚。此时,只需要在名称字段或者规格字段处输入端子,就可以从系统中查询中这两个字段中含有“端子”的纪录信息。如此的话,用户只需要在查询出的结果中继续查找即可。

这就告诫我们数据库管理人员,在数据库系统设计的时候,需要多用用模糊查询的功能。

具体的来说,需要注意以下几方面内容。

一是大小写不要进行区分。默认情况下,在数据库查询的时候,大小写是区分的。也就是说,现在有个字段内容为ABC,则我们查询abc 的时候,就查不到这条记录。因为其大小写不同。而作为前段应用程序的用户来说,往往其在输入查询条件的时候,其并不会区分英文的大小写。虽然,不区分大小写也可以在前端应用程序中实现,不过,一般来说,在数据库中实现要比在前端系统中实现简单的多。故笔者是建议在后台数据库中实现这个大小写的自动转换功能。在查询的时候,不要区分大小写。这可能就是国内的特有国情吧。

二是要实现前后模糊查询。如现在有个字段的内容为“好好学习”,若我现在输入查询条件为学习、好好、好学等,都可以查到这条件记录。此时该如何设计查询的条件语句呢?这就是前后模糊查询的概念。其实,要实现这个功能也很简单。在前台查询语句设计的时候,当把查询条件传递给后台数据库系统的时候,在查询参数的前后,分别加入模糊查询的参数%即可。即我们若输入的查询条件语句为“好学”,则其传递给数

据库的参数为“%好学%”。如此,就可以实现我们所需要的模糊查询。一般来说,模糊查询需要前台应用程序与后台数据库之间共同实现,这么处理起来,工作量会少许多;也会提高数据库的运行效率。

三是通过Beteen函数实现模糊查询。如现在有一个考勤系统,某个员工想知道自己在9月份自己的加班情况时,只需要在查询条件中,输入时间为9月1日到9月30日时,就可以查询到自己所需要的信息。这就是通过Beteen函数来实现模糊查询的。笔者以前碰到过一个平台型的ERP系统,他在这方面作的不错。这个产品就可以自己设计相关的报表。在报表设计中,在基于日期的查询条件,其即可以查询单个日期,而且还可以查询某个范围内的纪录。这就使利用了这个函数。另外,可以实现模糊查询的函数还有IN函数等等。作为数据库管理人员,需要从提高数据库的查询性能角度出发,合理选择这些模糊查询函数。并且,还需要配合前台应用程序设计,处理好模糊查询的功能。

第八个技巧:慎用Like等通配符。

Like关键字,从技术上来说,是一个非常友善的通配符。利用这个通配符,我们可以实现很多模糊查询。如现在在一个人事档案系统中,用户想知道身份证号码以“339005”开头的人事信息,此时,就可以利用Like语句实现。我们可以利用下面的条件语句,实现我们的需求,“where 身份证号码like …339005%?”。通过这个条件语句,可以查到所有身份证以339005开头的号码。

但是,当用户在一张大表中采用这个LIKE语句的话,就会发现这个查询语句的运行效率非常的慢。这是什么原因造成的呢?其实,不管

是Like 关键字,若采用MATCHES关键字的话,若在大量数据中查找

符合条件的记录,则其运行效率也比较低。这主要是其技术特性所造成的。

Like与Matches两个关键字,其支持通配符匹配。在有些专业书籍上把这个叫做“正规表达式”。不过由于在利用这些关键字查询的时候,数据库系统不是通过索引来查询,而是采用顺序扫描的方式来查询。显然,真是这种技术特性,造成了Like与Mateches两个关键字查询效率的低下。特别是在复杂查询或者大表查询中,用户可以明显感觉到速度比较慢。

索引是数据库中的一个重要的数据结构。索引如果利用的合理的话,可以大幅度的提升数据库的查询性能。一般情况下,我们在数据库设计的时候,要充分的利用索引,来提高数据库的运行效率。如对于一些经常需要用到的查询功能,我们需要为没有指定外键的列建立索引;如有

查询大表数据,而且又需根据好几个字段的值对其进行排序,也需要在这些列上建立复合索引。特别是在一些应用系统上,往往可以按以下字段的名称,就会对这个字段进行排序。遇到这种情况的话,更加需要在这些频繁进行排序的列上建立索引,以提高重新排序的效率。可见,若在查询的时候,若不能利用索引提高查询效率的话,则就好像跑车失去四轮驱动,速度会大受影响。

所以,在数据库系统设计中,要尽量避免采用Like或者Matche关键字。有时候,我们可以利用其他运算符号来代替。如我们可以利用〉(大于)或者<(小于)符号来达到类似的需求。若真的要采用这两个关键字

的话,则就需要做好查询优化方面的工作。如不要在基础表中直接利用这个两个关键字,而是通过报表视图、或者临时表等来查询,以减少其不良影响。

第九个技巧:利用注释提高查询语句的可读性。

在数据库设计中,有一个非常奇怪的现象。一些专家级的数据库设计人员,在写查询语句的时候,非对语句进行详细的注释。有时会,注释的内容大大超过了查询代码本身的篇幅。可是,往往一些入门不久的数据库设计人员,不喜欢写注释语句。这是一个很反常的现象。

笔者刚开始接触数据库的时候,也不喜欢写注释语句。觉得写注释语句太浪费时间。但是,一个偶然的事件让笔者改掉了这个坏习惯。那时笔者在观摩一个专家设计数据库的时候,被其密密麻麻的注释惊呆了。看了其代码之后,笔者可以非常轻松的阅读完其所有的代码。不愧为是专家级的人物。看了他的注释之后,在看看自己编写的代码注视,那真是大巫见小巫了。从此之后,笔者也在慢慢培养自己编写代码的习惯。现在笔者在数据库设计的时候,注释已经写的很详细了。至少笔者的同事在看到我的注释之后,不用看源代码就知道笔者要实现的目的了。

在编写注释的时候,要注意几个问题。

一是注释越详细越好。其实,注释最多牺牲一点磁盘空间,而不会对数据库的性能产生任何不良的影响。相反,注释详细的话,对于后续数据库维护与管理、系统二次开发的等等,都会提供很大的帮助。

二是最好采用英文注释。若采用中文注释的话,有时候数据库语言设置不当,在数据库实例安装的时候,不会把中文的注释带过去。所以,

作为数据库管理员,要有一定的英语基础,学会利用英语写注释。其实,这也不是很难。只要多看看别人设计的数据库注释,把他们常用的注释复制下来。通过选择合适的进行复制、粘贴就可以完成任务。

三是不仅在写查询语句的时候,要做好代码的注释工作。在编写其他代码的时候,如过程、函数等等,也要添加详细的代码。以增加这些复杂功能的可读性。

四是注释的内容。一般注释应该包含如下几方面的内容。一是这段代码要实现的功能;二是这段代码需要调用的参数;三是这段代码输出的结果。若是多表关联查询的话,最好能够说明表之间的对应关系。若在查询语句中,直接调用了函数的话,则最好能够注明这个函数的功能;等等。终止一个原则就是,让其他人看到这个注释,不再需要去查询其他的资料,就可以明白这段代码的含义。

详细的注释内容,不仅不会降低数据库的运行性能,而且还可以提高数据库的管理与维护的效率;同时也可以加快前台应用程序开发设计的速度。又因为查询语句是系统中利用的最多的语句,也是引用的最频繁的语句。故在查询语句中,更加需要做好相关的注释。

第十个技巧:必要的时候,限制用户所使用的行。

在使用一些大型管理系统的时候,如ERP系统。我们若查询产品信息,默认的情况下,若记录比较多的时候,其不会把所有的记录都查询出来。如在ERP系统的数据库中,其有20000个产品信息。而端子类的产品信息就占据到1000个。此时,我们在查询条件中,若产品类别限制为“端子”的话,则其查询出来的结果也可能不是所有的端子。默认

显示的话,可能只有前面的100个端子类产品。若用户需要看到全部的产品信息,就需要点击“显示全部”按钮,才可以显示出全部的信息。

其实,不管是一些应用程序如此设计,在Oracle数据库中,本身

也有这方面的限制。如直接在PL/SQL客户端中查询数据的话,其显示的记录默认情况下也是有限制的,而不会把所有符合条件的语句查询出来。若用户需要查询所有符合条件的记录,则需要点击“继续”按钮,以让数据库显示所有的记录。

为什么要做类似的限制呢?这主要就是为了提高数据库查询的性能。我们直接在数据库服务器上,在几百万条记录中查询的话,显示几百条记录跟现实几千条记录所花费的时间明显不同。前者可能只需要3秒即可。而后者可能需要1分钟。所以,为了减少用户等待的时间,我们往往需要限制首次查询默认显示的记录数字。

如我们往往在查询语句中,利用top 100 来让数据库只显示前100条记录。如此的话,可以明显的缩短用户的等待时间。默认情况下,是根据记录创建的时间顺序,来显示记录的。最迟创建的记录,其显示在最前。以此类推。

当用户需要的数据在前面100条之内,则就不需要再查看其他记录了。相反,若不在的话,则就需要查询全部记录信息了。

ORACLE常用SQL语句大全

ORACLE常用SQL语句大全 一、基础 1、说明:创建数据库 CREATE DATABASE database-name 2、说明:删除数据库 drop database dbname 3、说明:备份sql server --- 创建备份数据的 device USE master EXEC sp_addumpdevice 'disk', 'testBack', 'c:/mssql7backup/MyNwind_1.dat' --- 开始备份 BACKUP DATABASE pubs TO testBack 4、说明:创建新表 create table tabname(col1 type1 [not null] [primary key],col2 type2 [not nul l],..) 根据已有的表创建新表: A:select * into table_new from table_old (使用旧表创建新表) B:create table tab_new as select col1,col2… from tab_old definition only<仅适用于Oracle> 5、说明:删除表 drop table tablename

6、说明:增加一个列,删除一个列 A:alter table tabname add column col type B:alter table tabname drop column colname 注:DB2DB2中列加上后数据类型也不能改变,唯一能改变的是增加varchar类型的长度。 7、添加主键: Alter table tabname add primary key(col) 删除主键: Alter table tabname drop primary key(col) 8、创建索引:create [unique] index idxname on tabname(col….) 删除索引:drop index idxname 注:索引是不可更改的,想更改必须删除重新建。 9、创建视图:create view viewname as select statement 删除视图:drop view viewname 10、几个简单的基本的sql语句 选择:select * from table1 where 范围 插入:insert into table1(field1,field2) values(value1,value2) 删除:delete from table1 where 范围 更新:update table1 set field1=value1 where 范围 查找:select * from table1 where field1 like ’%value1%’ ---like的语法很精妙,查资料! 排序:select * from table1 order by field1,field2 [desc] 总数:select count as totalcount from table1 求和:select sum(field1) as sumvalue from table1 平均:select avg(field1) as avgvalue from table1 最大:select max(field1) as maxvalue from table1 最小:select min(field1) as minvalue from table1 11、几个高级查询运算词 A:UNION 运算符 UNION 运算符通过组合其他两个结果表(例如 TABLE1 和 TABLE2)并消去表中任何重复行而派生出一个结果表。当 ALL 随 UNION 一起使用时(即 UNION ALL),不消除重复行。两种情况下,派生表的每一行不是来自 TABLE1 就是来自 TABLE2。 B:EXCEPT 运算符 EXCEPT 运算符通过包括所有在 TABLE1 中但不在 TABLE2 中的行并消除所有重复行而派生出一个结果表。当ALL 随 EXCEPT 一起使用时 (EXCEPT ALL),不消除重复行。 C:INTERSECT 运算符 INTERSECT 运算符通过只包括 TABLE1 和 TABLE2 中都有的行并消除所有重复行而派生出一个结果表。当 ALL 随 INTERSECT 一起使用时 (INTERSECT ALL),不消除重复行。 注:使用运算词的几个查询结果行必须是一致的。 12、使用外连接

oracle常用命令及格式

oracle常用命令及格式 一:关于日志管理的 1.切换日志:sql> alter system switch logfile; 2.切换checkpoints:sql> alter system checkpoint; 3.增加日志组:sql> alter database add logfile [group 4] sql> ('/disk3/log4a.rdo','/disk4/log4b.rdo') size1m; 4.增加日志成员 sql> alter database add logfile member sql> '/disk3/log1b.rdo' to group 1, sql> '/disk4/log2b.rdo' to group 2; 5.改变日志文件名字或路径 sql> alter database rename file 'c:/oracle/oradata/oradb/re do01.log' sql> to 'c:/oracle/oradata/redo01.log'; (此处注意,那个文件路径的输入格式) 6.删除日志文件组:sql> alter database drop logfile group 3;

7.删除日志文件成员 sql> alter database drop logfile member 'c:/oracle/oradata/ redo01.log'; 8.清除日志文件内容 sql> alter database clear [unarchived] logfile 'c:/oracle/l og2a.rdo'; 二、关于表空间管理的 1.创建表空间 sql> create tablespace tablespace_name datafile 'c:\oracle\ oradata\file1.dbf' size100m, sql> 'c:\oracle\oradata\file2.dbf' size100mminimum extent 5 50k [logging/nologging] sql> default storage (initial 500k next 500k maxextents 500 pctinccease 0) sql> [online/offline] [permanent/temporary] [extent_managem ent_clause]

Oracle数据库操作命令

Oracle数据库操作命令 1.登录数据库: SQL Window 与Command Window Sqlplus system/密码@orcl 2.关闭数据库: Sqlplus/as sysdba Shutdown immediate 3.启动数据库: Sqlplus/as sysdba(已登录时可不用再写) Startup 4.查看参数 ①查看数据库:show parameter db_name; ②查看实例:show parameter instance; ③查看实例名:show parameter instance_name; ④查看Oracle数据库中当前用户所拥有的表: select table_name from user_tables; ⑤查看Oracle数据库中当前用户所能访问的表: Select user,table_name from all_tables; ⑥查看Oracle数据库中本用户下所有的列: Select table_name,column_name from user_tab_columns; Oracle表空间: 5.在数据库orcl中,创建表空间的命令: Create tablespace 表空间名datafile ‘C:\表空间名.dbf’ size 20M; 6.为表空间中添加数据文件命令格式: Alter tablespace 表空间名add datafile ‘D:\表空间名.dbf’ size 100M; 7.创建表空间后,在数据字典中获得其相关信息(查看表空间的数据文件): Select tablespace_name,file_name from dba_data_files; 8.创建表空间时,还可指定数据文件自动扩展机制(指定每次增长尺寸为5M) Create tablespace 表空间名datafile ‘C:\表空间名.dbf’ size 20M autoextend on next 5M; 允许物理文件无限制增长存在一定风险,此时可在创建时设定表空间的最大大小(如500M) Create tablespace 表空间名datafile ‘C:\表空间名.dbf’ size 20M autoextend on next 5M maxsize 500M; 9.修改数据库的默认表空间: Alter database default tablespace 表空间名; 查看某用户的缺省表空间: Select username,default_tablespace from dba_users where username=’用户名’; 修改某用户的缺省表空间: Alter user 用户名default tablespace 表空间名; 10.创建数据库用户: Create users 用户名identified by 密码default tablespace 表空间名; 修改用户的密码:

2020年(Oracle管理)Oracle SQL性能优化方法

(Oracle管理)Oracle SQL性能优化方法

OracleSQL性能优化方法探讨 Oracle性能优化方法(SQL篇)1 1综述2 2表分区的应用2 3访问Table的方式3 4共享SQL语句3 5选择最有效率的表名顺序5 6WHERE子句中的连接顺序.6 7SELECT子句中避免使用’*’6 8减少访问数据库的次数6 9使用DECODE函数来减少处理时间7 10整合简单,无关联的数据库访问8 11删除重复记录8 12用TRUNCATE替代DELETE9 13尽量多使用COMMIT9 14计算记录条数9 15用Where子句替换HAVING子句9 16减少对表的查询10 17通过内部函数提高SQL效率.11 18使用表的别名(Alias)12 19用EXISTS替代IN12 20用NOT EXISTS替代NOT IN13 21识别低效执行的SQL语句13

22使用TKPROF 工具来查询SQL性能状态14 23用EXPLAIN PLAN 分析SQL语句14 24实时批量的处理16

1综述 ORACLE数据库的性能调整是个重要,却又有难度的话题,如何有效地进行调整,需要经过反反复复的过程。在数据库建立时,就能根据应用的需要合理设计分配表空间以及存储参数、内存使用初始化参数,对以后的数据库性能有很大的益处,建立好后,又需要在应用中不断进行应用程序的优化和调整,这需要在大量的实践工作中不断地积累经验,从而更好地进行数据库的调优。 数据库性能调优的方法 ●调整内存 ●调整I/O ●调整资源的争用问题 ●调整操作系统参数 ●调整数据库的设计 ●调整应用程序 本文针对应用程序的调整,来说明对数据库性能如何进行优化。 2表分区的应用 对于海量数据的表,可以考虑建立分区以提高操作效率。建立分区一般以关键字为分区的标志,也可以以其他字段作为分区的标志,但效率不如关键字高。建立分区的语句在建表时可以进行说明: createtableTABLENAME() partitionbyrange(PutOutNo) (partitionPART1valueslessthan(200312319999) partitionPART2valueslessthan(200412319999)

oracle数据库基本命令

oracle数据库基本命令 oracle安装后 sys:超级管理员(dba),默认密码为:change_on_install system:系统管理员(dbaoper),默认密码为:manager; sys与system的不同在于sys能够create datebase而system则不能。scott:普通用户,默认密码:tiger 1.切换用户:conn 用户名/密码; SQL> conn system/manager; Connected to Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 Connected as system SQL> conn sys/change_on_install as sysdba; Connected to Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 Connected as SYS 注意:sys与其他用户在命令窗口切换时的不同。 2.修改密码:passw username;(普通用户可以修改自己密码,管理员可以修改其他人的密码) 3.显示当前用户。show user; 4.断开数据库同时推出:exit; 文件操作 5.运行sql脚本,start d:\a.sql; 6.编辑指定的sql脚本。Edit d:\a.sql; 7.将屏幕上指定的内容输出到指定文本中去。spool e:\b.sql;执行语句;spool off;

8.显示设置环境变量; 可以用来控制输出的各种格式,如果希望永久保存可以修改glogin.sql脚本。 Linesize(行宽): show linesize;显示行宽 set linesize 90;设置行宽为90个字符。 Pagesize(页面大小): Show pagesize;显示页面大小 Set pagesize 180;设置页面的小。 (做报表时可以用。一页设定几行。)

Oracle SQLPlus 常用命令及解释

Oracle SQLPlus 常用命令及解释 1.@ 执行位于指定脚本中的SQLPlus语句。可以从本地文件系统或Web服务器中调用脚本。可以为脚本中的变量传递值。在iSQL*Plus中只能从Web服务器中调用脚本。 2.@@ 执行位于指定脚本中的SQL*Plus语句。这个命令和@(“at”符号)命令功能差不多。在执行嵌套的命令文件时它很有用,因为它会在与调用它的命令文件相同的路径或url中查找指定的命令文件。在iSQL*Plus中只支持url形式。 3./ 执行保存在SQL缓冲区中的最近执行的SQL命令或PL/SQL块。在SQL*Plus命令行中,可在命令提示符或行号提示符使用斜线(/)。也可在iSQL*Plus的输入区中使用斜线(/)。斜线不会列出要执行的命令。 4.ACCEPT 可以修改既有变量,也可定义一个新变量并等待用户输入初始值,读取一行输入并保存到给出的用户变量中。ACCEPT在iSQL*Plus中不可用。 5.APPEND 把指定文本添加到SQL缓冲区中当前行的后面。如果text的最前面包含一个空格可在APPEND和text间输入两个空格。如果text的最后是一个分号,可在命令结尾输入两个分号(SQL*Plus会把单个的分号解释为一个命令结束符)。APPEND 在iSQL*Plus中不可用。 6.ARCHIVE LOG 查看和管理归档信息。启动或停止自动归档联机重做日志,手工(显示地)归档指定的重做日志,或者显示重做日志文件的信息。 7.ATTRIBUTE 为对象类型列的给定属性指定其显示特性,或者列出单个属性或所有属性的当前显示特性。 8.BREAK 分开重复列。指定报表中格式发生更改的位置和要执行的格式化动作(例如,在列值每次发生变化时跳过一行)。只输入BREAK而不包含任何子句可列出当前的BREAK定义。 9.BTITLE 在每个报表页的底部放置一个标题并对其格式化,或者列出当前BTITLE定义。

OracleSQL的优化

Oracle SQL的优化 标签:oraclesql优化date数据库subquery 2009-10-14 21:18 18149人阅读评论(21) 收藏举报分类: Oracle Basic Knowledge(208) SQL的优化应该从5个方面进行调整: 1.去掉不必要的大型表的全表扫描 2.缓存小型表的全表扫描 3.检验优化索引的使用 4.检验优化的连接技术 5.尽可能减少执行计划的Cost SQL语句: 是对数据库(数据)进行操作的惟一途径; 消耗了70%~90%的数据库资源;独立于程序设计逻辑,相对于对程序源代码的优化,对SQL语句的优化在时间成本和风险上的代价都很低; 可以有不同的写法;易学,难精通。 SQL优化: 固定的SQL书写习惯,相同的查询尽量保持相同,存储过程的效率较高。 应该编写与其格式一致的语句,包括字母的大小写、标点符号、换行的位置等都要一致 ORACLE优化器: 在任何可能的时候都会对表达式进行评估,并且把特定的语法结构转换成等价的结构,这么做的原因是 要么结果表达式能够比源表达式具有更快的速度 要么源表达式只是结果表达式的一个等价语义结构 不同的SQL结构有时具有同样的操作(例如: = ANY (subquery) and IN (subquery)),ORACLE会把他们映射到一个单一的语义结构。 1 常量优化: 常量的计算是在语句被优化时一次性完成,而不是在每次执行时。下面是检索月薪大于2000的的表达式: sal > 24000/12

sal > 2000 sal*12 > 24000 如果SQL语句包括第一种情况,优化器会简单地把它转变成第二种。 优化器不会简化跨越比较符的表达式,例如第三条语句,鉴于此,应尽量写用常量跟字段比较检索的表达式,而不要将字段置于表达式当中。否则没有办法优化,比如如果sal上有索引,第一和第二就可以使用,第三就难以使用。 2 操作符优化: 优化器把使用LIKE操作符和一个没有通配符的表达式组成的检索表达式转换为一个“=”操作符表达式。 例如:优化器会把表达式ename LIKE 'SMITH'转换为ename = 'SMITH' 优化器只能转换涉及到可变长数据类型的表达式,前一个例子中,如果ENAME 字段的类型是CHAR(10),那么优化器将不做任何转换。 一般来讲LIKE比较难以优化。 其中: ~~IN 操作符优化: 优化器把使用IN比较符的检索表达式替换为等价的使用“=”和“OR”操作符的检索表达式。 例如,优化器会把表达式ename IN ('SMITH','KING','JONES')替换为 ename = 'SMITH' OR ename = 'KING' OR ename = 'JONES‘ oracle 会将 in 后面的东西生成一存中的临时表。然后进行查询。 如何编写高效的SQL: 当然要考虑sql常量的优化和操作符的优化啦,另外,还需要: 1 合理的索引设计: 例:表record有620000行,试看在不同的索引下,下面几个SQL的运行情况:语句A SELECT count(*) FROM record WHERE date >'19991201' and date <'19991214‘and amount >2000 语句B

oracle命令行大全

SQL*PLUS命令的使用大全 Oracle的sql*plus是与oracle进行交互的客户端工具。在sql*plus中,可以运行sql*plus命令与sql*plus 语句。 我们通常所说的DML、DDL、DCL语句都是sql*plus语句,它们执行完后,都可以保存在一个被称为sql buffer的内存区域中,并且只能保存一条最近执行的sql语句,我们可以对保存在sql buffer中的sql 语句进行修改,然后再次执行,sql*plus一般都与数据库打交道。 除了sql*plus语句,在sql*plus中执行的其它语句我们称之为sql*plus命令。它们执行完后,不保存在sql buffer的内存区域中,它们一般用来对输出的结果进行格式化显示,以便于制作报表。 下面就介绍一下一些常用的sql*plus命令: 1. 执行一个SQL脚本文件 SQL>start file_name SQL>@ file_name 我们可以将多条sql语句保存在一个文本文件中,这样当要执行这个文件中的所有的sql语句时,用上面的任一命令即可,这类似于dos中的批处理。 2. 对当前的输入进行编辑 SQL>edit 3. 重新运行上一次运行的sql语句 SQL>/ 4. 将显示的内容输出到指定文件 SQL> SPOOL file_name 在屏幕上的所有内容都包含在该文件中,包括你输入的sql语句。 5. 关闭spool输出 SQL> SPOOL OFF 只有关闭spool输出,才会在输出文件中看到输出的内容。 6.显示一个表的结构 SQL> desc table_name 7. COL命令: 主要格式化列的显示形式。 该命令有许多选项,具体如下: COL[UMN] [{ column|expr} [ option ...]] Option选项可以是如下的子句: ALI[AS] alias CLE[AR] FOLD_A[FTER] FOLD_B[EFORE] FOR[MA T] format

2020年(Oracle管理)如何优化SQL语句以提高Oracle执行效率

(Oracle管理)如何优化SQL语句以提高Oracle执 行效率

(1)选择最有效率的表名顺序(只在基于规则的优化器中有效): Oracle的解析器按照从右到左的顺序处理FROM子句中的表名,FROM子句中写在最后的表(基础表drivingtable)将被最先处理,在FROM子句中包含多个表的情况下,你必须选择记录条数最少的表作为基础表。如果有3个以上的表连接查询,那就需要选择交叉表(intersectiontable)作为基础表,交叉表是指那个被其他表所引用的表。 (2)WHERE子句中的连接顺序: Oracle采用自下而上的顺序解析WHERE子句,根据这个原理,表之间的连接必须写在其他WHERE条件之前,那些可以过滤掉最大数量记录的条件必须写在WHERE子句的末尾。(3)SELECT子句中避免使用‘*’: Oracle在解析的过程中,会将‘*’依次转换成所有的列名,这个工作是通过查询数据字典完成的,这意味着将耗费更多的时间。 (4)减少访问数据库的次数: Oracle在内部执行了许多工作:解析SQL语句,估算索引的利用率,绑定变量,读数据块等。(5)在SQL*Plus,SQL*Forms和Pro*C中重新设置ARRAYSIZE参数,可以增加每次数据库访问的检索数据量,建议值为200。 (6)使用DECODE函数来减少处理时间: 使用DECODE函数可以避免重复扫描相同记录或重复连接相同的表。 (7)整合简单,无关联的数据库访问: 如果你有几个简单的数据库查询语句,你可以把它们整合到一个查询中(即使它们之间没有关系)。 (8)删除重复记录: 最高效的删除重复记录方法(因为使用了ROWID)例子:DELETEFROMEMPEWHEREE.ROWID>(SELECTMIN(X.ROWID)

oracle set命令大全

oracle set命令详解 SET命令参数详解 我好如容易录入的,希望对大家有帮助,如果有错误也请指正.有更好的也请分享. SQL*PLUS维护系统变量,也称SET变量,利用它可为SQL*PLUS交互建立一个特殊的环境,如:设 置NUMBER数据的显示宽度;设置每页的行数;设置列的宽度等。可用SET命令改变这些系统变 量,也可用SHOW命令列出它们. 使用set命令的语法如下: SET 系统变量值 其中系统变量及其可选值如下: ARRAY[SIZE] {20(默认值)|n} AUTO[COMMIT] {OFF(默认值)|ON|IMM[EDIATE]} BLO[CKTERMINATOR] {.(默认值)|C} CMDS[EP] {;|C|OFF(默认值)|ON} COM[PATIBILITY] {V5|V6|V7|NATIVE(默认值)} CON[CAT] {.(默认值)|C|OFF|ON(默认值)} COPYC[OMMIT] {0(默认值)|n} CRT crt DEF[INE] {&|C|OFF|ON(默认值)} ECHO {OFF|ON} EMBEDDED {OFF(默认值)|ON} ESC[APE] { (默认值)|C|OFF(默认值)|ON} FEED[BACK] {6(默认值)|n|OFF|ON} FLU[SH] {OFF|ON(默认值)} HEA[DING] {OFF|ON(默认值)} HEADS[EP] {|(默认值)|C|OFF|ON(默认值)} LIN[ESIZE] {80(默认值)|n} LONG {80(默认值)|n} LONGC[HUNKSIZE] {80(默认值)|n} MAXD[ATA] n NEWP[AGE] {1(默认值)|n} NULL text NUMF[ORMAT] 格式 NUM[WIDTH] {10(默认值)|n}

Oracle-SQL简单查询语句处理

Oracle-SQL简单查询语句处理笔记一 数据处理及进展–数据:是指所有能输入到计算机中并被计算机程序处理的符号的总称。 数据处理:是指对各种形式的数据进行收集、储存、加工和传播的一系列活动的综合。 其目的是从大量的、原始的数据中抽取、推导出对人们有价值的信息。 数据处理的3个阶段: ?人工管理阶段 ?文件系统阶段 ?数据库系统阶段 关系型数据库 ?数据模型–是数据库系统中,用于抽象、表示、处理现实世界中数据的一种形式架构。 ?数据模型三层次 概念模型:是现实世界到信息世界的第一层抽象,常用E-R 图表示。逻辑模型:是用户从数据库所看到的模型,是具体的DBMS 所支持的数据模型,常用的包括层次模型、网状模型、关系模型。

物理模型:是面向计算机物理表示的模型,描述了数据在储存介质上的组织结构,它不但与具体的DBMS有关,而且 V1.0 还与操作系统和硬件有关 关系型数据库 ?关系模型 关系模型有关系数据结构、关系操作集合和关系完整性约束三部分组成的。 关系数据结构:在关系模型中,现实世界的实体以及实体间的各种联系均用关系来表示。 在用户看来,关系就是一张由行和列组成的二维数据表。 关系操作:包括:选择、投影、连接、增加、删除、修改等。 关系完整性约束:包括实体完整性、参照完整性和用户定义的完整性。 算术运算符? 算术运算符优先级 乘除优先于加减 相同优先权的表达式按照从左至右的顺序依次计算 括弧可以提高优先权,并使表达式的描述更为清晰 空值NULL

?空值NULL –空值是指一种无效的、未赋值、未知的或不可用的值。 空值不同于零或者空格。 列别名 好处:方便查看 用来重新命名列的显示标题,如果SELECT语句中包含计算列,通常使用列别名来重新定义列标题。 ?使用列别名的方法 方式1:列名列别名 方式2:列名 AS 列别名 ?以下三种情况列别名两侧需要添加双引号 列别名中包含有空格 列别名中要求区分大小写 列别名中包含有特殊字符 连接操作符使用 || 去连接,相当于java中的 + 号呢。 消除重复行使用DISTINCT 关键字 习题整理一:简单的查询语句(查询oracle已经创建的表格,使用用户scott普通用户登陆) 说明:

SQL PLUS 命令大全

一、ORACLE的启动和关闭 1、在单机环境下 要想启动或关闭ORACLE系统必须首先切换到ORACLE用户,如下 su - oracle a、启动ORACLE系统 oracle>svrmgrl SVRMGR>connect internal SVRMGR>startup SVRMGR>quit b、关闭ORACLE系统 oracle>svrmgrl SVRMGR>connect internal SVRMGR>shutdown SVRMGR>quit 启动oracle9i数据库命令: $ sqlplus /nolog SQL*Plus: Release 9.2.0.1.0 - Production on Fri Oct 31 13:53:53 2003 Copyright (c) 1982, 2002, Oracle Corporation.All rights reserved. SQL> connect / as sysdba Connected to an idle instance. SQL> startup^C SQL> startup ORACLE instance started. 2、在双机环境下 要想启动或关闭ORACLE系统必须首先切换到root用户,如下 su - root a、启动ORACLE系统 hareg -y oracle b、关闭ORACLE系统 hareg -n oracle Oracle数据库有哪几种启动方式

说明: 有以下几种启动方式: 1、startup nomount 非安装启动,这种方式启动下可执行:重建控制文件、重建数据库 读取init.ora文件,启动instance,即启动SGA和后台进程,这种启动只需要init.ora文件。 2、startup mount dbname 安装启动,这种方式启动下可执行: 数据库日志归档、 数据库介质恢复、 使数据文件联机或脱机, 重新定位数据文件、重做日志文件。 执行“nomount”,然后打开控制文件,确认数据文件和联机日志文件的位置,但此时不对数据文件和日志文件进行校验检查。 3、startup open dbname 先执行“nomount”,然后执行“mount”,再打开包括Redo log文件在内的所有数据库文件, 这种方式下可访问数据库中的数据。 4、startup,等于以下三个命令 startup nomount alter database mount alter database open 5、startup restrict 约束方式启动 这种方式能够启动数据库,但只允许具有一定特权的用户访问 非特权用户访问时,会出现以下提示: ERROR: ORA-01035: ORACLE 只允许具有 RESTRICTED SESSION 权限的用户使用 6、startup force 强制启动方式

oracle 经典SQL语句大全

一、基础 1、说明:创建数据库 CREATE DATABASE database-name 2、说明:删除数据库 drop database dbname 3、说明:备份sql server --- 创建备份数据的 device USE master EXEC sp_addumpdevice 'disk', 'testBack', 'c:\mssql7backup\MyNwind_1. dat' --- 开始备份 BACKUP DATABASE pubs TO testBack 4、说明:创建新表 create table tabname(col1 type1 [not null] [primary key],col2 type2 [not null],..) 根据已有的表创建新表: A:create table tab_new like tab_old (使用旧表创建新表) B:create table tab_new as select col1,col2… from tab_old definition only 5、说明:删除新表 drop table tabname 6、说明:增加一个列 Alter table tabname add column col type 注:列增加后将不能删除。DB2中列加上后数据类型也不能改变,唯一能改变的是增加varchar类型的长度。 7、说明:添加主键:Alter table tabname add primary key(col) 说明:删除主键: Alter table tabname drop primary key(col) 8、说明:创建索引:create [unique] index idxname on tabname(col….) 删除索引:drop index idxname 注:索引是不可更改的,想更改必须删除重新建。 9、说明:创建视图:create view viewname as select statement 删除视图:drop view viewname 10、说明:几个简单的基本的sql语句 选择:select * from table1 where 范围 插入:insert into table1(field1,field2) values(value1,value2) 删除:delete from table1 where 范围 更新:update table1 set field1=value1 where 范围 查找:select * from table1 where field1 like ’%value1%’ ---like的语法很精妙,查资料! 排序:select * from table1 order by field1,field2 [desc] 总数:select count as totalcount from table1

Oracle查询语句基本命令一

oracle查询语句大全--基本命令大全一 1.create user username identified by password;//建用户名和密码oracle ,oracle 2.grant connect,resource,dba to username;//授权grant connect,resource,dba,sysdba to username; 3.connect username/password//进入。 4.select table_name,column_name from user_tab_columns where table_name='mview_log';//查询表中的表名,字段名等等。 5. 如何执行脚本SQL文件? SQL>@PATH/filename.sql; 6.Oracle oledb 提供者在command中执行多条SQL语句与SQL SERVER有少许差别,SQL Server只需使用";"分割多条SQL语句,而Oracle需要遵守ORACLE调用规范,即除分号分割外,还需以begin /end;包围语句体. 使用C#描述应如下所示: https://www.360docs.net/doc/dd9441532.html,mandText = "begin INSERT INTO GROUP_INFO (GROUP_ID, GROUP_NAME) V ALUES (1, \'2\'); INSERT INTO GROUP_INFO(GROUP_ID, GROUP_NAME) V ALUES (2, \'2\'); end;"; 7.查询用户下的表的信息select distinct table_name from user_tab_columns; 8.如何搜索出前N条记录?Select a.*,rownum from (select * from cardkind order by cardkind ) a where rownum show user 3、查看系统拥有哪些用户SQL> select * from all_users; 4、新建用户并授权 SQL> create user a identified by a;(默认建在SYSTEM表空间下) SQL> grant connect,resource to a; 5、连接到新用户SQL> conn a/a

OracleSQL性能优化方法

OracleSQL性能优化方法 Oracle性能优化方法(SQL篇) (1) 1综述 (2) 2表分区的应用 (2) 3访咨询Table的方式 (3) 4共享SQL语句 (3) 5选择最有效率的表名顺序 (5) 6WHERE子句中的连接顺序. (6) 7SELECT子句中幸免使用’*’ (6) 8减少访咨询数据库的次数 (6) 9使用DECODE函数来减少处理时刻 (7) 10整合简单,无关联的数据库访咨询 (8) 11删除重复记录 (8) 12用TRUNCATE替代DELETE (9) 13尽量多使用COMMIT (9) 14运算记录条数 (9) 15用Where子句替换HA VING子句 (9) 16减少对表的查询 (10) 17通过内部函数提高SQL效率 (11) 18使用表的不名(Alias) (12) 19用EXISTS替代IN (12) 20用NOT EXISTS替代NOT IN (13) 21识不低效执行的SQL语句 (13) 22使用TKPROF 工具来查询SQL性能状态 (14) 23用EXPLAIN PLAN 分析SQL语句 (14) 24实时批量的处理 (16)

1综述 ORACLE数据库的性能调整是个重要,却又有难度的话题,如何有效地进行调整,需要通过反反复复的过程。在数据库建立时,就能依照顾用的需要合理设计分配表空间以及储备参数、内存使用初始化参数,对以后的数据库性能有专门大的益处,建立好后,又需要在应用中不断进行应用程序的优化和调整,这需要在大量的实践工作中不断地积存体会,从而更好地进行数据库的调优。 数据库性能调优的方法 ●调整内存 ●调整I/O ●调整资源的争用咨询题 ●调整操作系统参数 ●调整数据库的设计 ●调整应用程序 本文针对应用程序的调整,来讲明对数据库性能如何进行优化。 2表分区的应用 关于海量数据的表,能够考虑建立分区以提高操作效率。建立分区一样以关键字为分区的标志,也能够以其他字段作为分区的标志,但效率不如关键字高。建立分区的语句在建表时能够进行讲明: create table TABLENAME() partition by range (PutOutNo) (partition PART1 values lessthan (200312319999) partition PART2 values lessthan (200412319999) 。。。。。。 如此,在进行大部分数据查询,数据更新和数据插入时,Oracle自动判定操作应该在哪个分区进行,幸免了整表操作,提高了执行的效率

Oracle常用的45个查询语句

日期/时间 相关查询 1、获取当前月份的第一天 运行这个命令能快速返回当前月份的第一天。你可以用任何的日期值替换 “SYSDATE”来指定查询的日期。 1 SELECT TRUNC (SYSDATE, 'MONTH') "First day of current month " 2 FROM DUAL; 2、获取当前月份的最后一天 这个查询语句类似于上面那个语句,而且充分照顾到了闰年,所以当二月份有 29 号,那么就会返回 29/2 。你可以用任何的日期值替换 “SYSDATE”来指定查询的日期。 view source print? 1 SELECT TRUNC (LAST_DAY (SYSDATE)) "Last day of current mont h" 2 FROM DUAL; 3、获取当前年份的第一天 每年的第一天都是1 月1日,这个查询语句可以使用在存储过程中,需要对当前年份第一天做一些计算的时候。你可以用任何的日期值替换 “SYSDATE”来指定查询的日期。 1 SELECT TRUNC (SYSDATE, 'YEAR') "Year First Day" FROM DUAL; 4、获取当前年份的最后一天 类似于上面的查询语句。你可以用任何的日期值替换 “SYSDATE”来指定查询的日期。 view source print? 1 SELECT ADD_MONTHS (TRUNC (SYSDATE, 'YEAR'), 12) - 1 "Year Last Day" FROM DUAL 5、 获取当前月份的天数 这个语句非常有用,可以计算出当前月份的天数。你可以用任何的日期值替换 “SYSDATE”来指定查询的日期。 view source print? 1 SELECT CAST (TO_CHAR (LAST_DAY (SYSDATE), 'dd') AS INT) num ber_of_days 2 FROM DUAL; 6、获取当前月份剩下的天数 下面的语句用来计算当前月份剩下的天数。你可以用任何的日期值替换 “SYSDATE”来指定查询的日期。 1 SELECT SYSDATE, 2 LAST_DAY (SYSDATE) "Last",

Oracle SQL性能优化方法研究

Oracle SQL性能优化方法探讨 Oracle性能优化方法(SQL篇) (1) 1综述 (2) 2表分区的应用 (2) 3访问Table的方式 (3) 4共享SQL语句 (3) 5选择最有效率的表名顺序 (5) 6WHERE子句中的连接顺序. (6) 7SELECT子句中幸免使用’*’ (6) 8减少访问数据库的次数 (6) 9使用DECODE函数来减少处理时刻 (7) 10整合简单,无关联的数据库访问 (8) 11删除重复记录 (8) 12用TRUNCATE替代DELETE (9) 13尽量多使用COMMIT (9) 14计算记录条数 (9) 15用Where子句替换HAVING子句 (9) 16减少对表的查询 (10) 17通过内部函数提高SQL效率 (11)

18使用表的不名(Alias) (12) 19用EXISTS替代IN (12) 20用NOT EXISTS替代NOT IN (13) 21识不低效执行的SQL语句 (13) 22使用TKPROF 工具来查询SQL性能状态 (14) 23用EXPLAIN PLAN 分析SQL语句 (14) 24实时批量的处理 (16)

1综述 ORACLE数据库的性能调整是个重要,却又有难度的话题,如何有效地进行调整,需要通过反反复复的过程。在数据库建立时,就能依照顾用的需要合理设计分配表空间以及存储参数、内存使用初始化参数,对以后的数据库性能有专门大的益处,建立好后,又需要在应用中不断进行应用程序的优化和调整,这需要在大量的实践工作中不断地积存经验,从而更好地进行数据库的调优。 数据库性能调优的方法 ●调整内存 ●调整I/O ●调整资源的争用问题 ●调整操作系统参数 ●调整数据库的设计 ●调整应用程序 本文针对应用程序的调整,来讲明对数据库性能如何进行优化。 2表分区的应用 关于海量数据的表,能够考虑建立分区以提高操作效率。建

相关文档
最新文档