灵魂腐蚀 发表于 2015-1-16 22:29:31

MYSQL网站制作之Oracle SQL语句处置历程

而且其固有的弹性使得它易于扩展以处理不断增长的需求,或当需求MySQL学习教程减弱时缩减规模。oracle|历程|语句07年入手下手,换了一家公司,数据库利用的是ORACLE10G,之前一向利用的是INFORMIX和MSSERVER,感到ORACLE功效还真壮大,比Informi和msserver都好用多啦,系统布局和办理体例都有了很多变更,但利用两个月上去,实在数据库的基础道理是一样的,现分离之前的事情履历和进修的材料,总结ORACLE数据库的一些常识,明天先写OracleSQL语句处置历程:
一样平常来讲,数据库处置SQL城市经由三个历程:剖析、实行、前往了局,好比COGNOSReportNet经由过程拖放式完成体现层后,仍是会主动天生SQL,然后将SQL传送到ORACLE举行处置。
1。剖析
剖析是处置SQL语句的第一步,它是SQL语句处置历程较为主要的一步,它又包括几个方面:
(1)语法剖析,oracel是接纳数据库经常使用的自底向上的剖析办法,包括反省语律例范,定名标准,它是处置SQL语句中最损耗工夫且价值最高的步骤,次要体现在绑定变量和存储历程等方面:
A.绑定变量:这也是为何利用在某种情形下绑定变量体例会比非绑定体例效力和功能凌驾几倍,次要是绑定变量只会编译一次,随后就会把查询企图存储在一个共享池里,以便今后猎取和重用这个查询企图。
B.存储历程:存储历程比一样平常的SQL语句要快,就是它不必再次编译,并且还能够使用数据库里很多特征,使得它的速率会比一样平常SQL语句快良多
(2)语义剖析,学过编译道理的都晓得,这一步长短常主要的,ORACLE次要是剖析SQL语句格局是不是准确,各个工具是不是存在,和它是不是有充足的权限实行
(3)视图转换,它会将触及的视图的查询语句转换为较为复杂的等效毗连表达式,有些人以为视图必定实行速率会比利用表要快,实在纷歧定的,次要详细情形详细剖析,只需把这篇文章真正了解,本人剖析是不坚苦的;
(4)表达式转换。将庞大的SQL表达式转换为响应的对基表的查询语句。写SQL的尺度
A.不要再WHERE字句中举行盘算,如SELECTAT_IDFROMARTICLEWHEREAT_ID>10*10000ANDAT_ID<(10+1)*10000是不同意的就是这个道理
B.注重数据范例的婚配
SELECTBK_IDFROMBOOKWHEREBK_PRICE>30就比不上SELECTBK_IDFROMBOOKWHEREBK_PRICE>30.00好啦
(5)选择优化器,学过编译道理时分就晓得,利用不必的优化器是会有分歧的实行效力,固然,最好是能依据批量的SQL本人编一个特定的优化器
(6)选择毗连体例。INFORMIX就有复杂的合并毗连和排序-合并毗连手艺之分,次要看是不是利用索引的成绩。
(7)选择毗连按次。多表毗连,oracle选择那一个对表先毗连,并选择源数据表
(8)选择数据搜刮路径,依据以上前提选择符合的数据搜苏路径,如选用全表搜刮仍是使用索引或是其他体例搜刮
(9)到SQL中为该SQL语句找到一个共享SQL区,如已有共享SQL区,则间接实行共享区内容。
2。实行
次要在于利用UPDATE和DELETE语句时,必需将行锁定,以避免其他用户修正。ORACLE先从数据库缓冲区中寻觅是不是存在所要的数据块,假如存在,就间接读或修正,不然从物理文件中读到数据库缓冲区中。
3。前往了局
对SELECT语句必要前往了局的语句,起首看是不是必要排序,必要,则排序后前往给用户,然后依据内存的巨细分歧,能够一次掏出一行数据,一能够一次取一组数据。这时候,大概要用到数据布局中的内部排序,并回排序等算法,以是如内存同意的话,只管年夜会进步功能的;
最初总结一下经用利用的SELECT的处置步骤:
翻开游标
|
---------检察共享SQL区,是不是有不异的SQL语句
||
|剖析
||
|界说
------------------------|
|
-------------------------绑定变量
||
|绑缚
--------------------------|
|
并行处置
|
实行查询
|
前往了局
|
封闭游标
通过支付一定费用,客户可以得到优先的24/7支持,访问内容丰富的在线知识库和联系一个专门的技术负责经理。

老尸 发表于 2015-1-19 15:00:20

varchar(max)\\\\nvarchar(max)类型的引入大大的提高了编程的效率,可以使用字符串函数对CLOB类型进行操作,这是一个亮点。

不帅 发表于 2015-1-26 23:57:16

然后最好有实践机会,能够把实践到的和实践结合起来,其实理论思考是个非常困扰和痛苦的事情

因胸联盟 发表于 2015-2-5 01:27:38

每天坚持做不一样的是,认真做笔录,定时复习。一个月你就可以有一定的收获。当然如果你想在sql方面有一定的造诣,你少不了需要看很多很多的书籍了。

柔情似水 发表于 2015-2-11 00:38:19

一个百万级别的基本信息表A,一个百万级别的详细记录表B,A中有个身份证id,B中也有身份id;先要找出A中在B的详细记录。

若天明 发表于 2015-3-1 19:09:38

你可以简单地认为适合的就是好,不适合就是不好。

灵魂腐蚀 发表于 2015-3-10 22:17:47

Mirror可以算是SQLServer的Dataguard了。但是能不能被大伙用起来就不知道了。

简单生活 发表于 2015-3-17 11:20:32

在select语句中可以使用groupby子句将行划分成较小的组,然后,使用聚组函数返回每一个组的汇总信息,另外,可以使用having子句限制返回的结果集。

再现理想 发表于 2015-3-24 09:25:55

需要注意的一点,也是我使用过程中发现的一个问题。在建立function->schema->table后,如果在现有的分区表上建立没有显式声明的聚集索引时,分区表会自动变为非分区表。这一点很让我纳闷。
页: [1]
查看完整版本: MYSQL网站制作之Oracle SQL语句处置历程