易截截图软件、单文件、免安装、纯绿色、仅160KB

通过分析SQL语句的执行计划优化SQL(二)


二:有效的应用设计
我们通常将最常用的应用分为2种类型:联机事务处理类型(OLTP),决策支持系统(DSS)。
联机事务处理(OLTP)
该类型的应用是高吞吐量,插入、更新、删除操作比较多的系统,这些系统以不断增长的大容量数据为特征,它们提供给成百用户同时存取,典型的OLTP系统是订票系统,银行的业务系统,订单系统。OTLP的主要目标是可用性、速度、并发性和可恢复性。
当设计这类系统时,必须确保大量的并发用户不能干扰系统的性能。还需要避免使用过量的索引与cluster 表,因为这些结构会使插入和更新操作变慢。
决策支持(DSS)
该类型的应用将大量信息进行提取形成报告,协助决策者作出正确的判断。典型的情况是:决策支持系统将OLTP应用收集的大量数据进行查询。典型的应用为客户行为分析系统(超市,保险等)。
决策支持的关键目标是速度、精确性和可用性。
该种类型的设计往往与OLTP设计的理念背道而驰,一般建议使用数据冗余、大量索引、cluster table、并行查询等。
近年来,该类型的应用逐渐与OLAP、数据仓库紧密的联系在一起,形成的一个新的应用方向。
三:SQL语句处理的过程
在调整之前我们需要了解一些背景知识,只有知道这些背景知识,我们才能更好的去调整sql语句。
本节介绍了SQL语句处理的基本过程,主要包括:
查询语句处理
DML语句处理(insert, update, delete)
DDL 语句处理(create .. , drop .. , alter .. , )
事务控制(commit, rollback)
SQL 语句的执行过程(SQL Statement Execution)
在某些情况下,Oracle运行sql的过程可能与下面列出的各个阶段的顺序有所不同。
如DEFINE阶段可能在FETCH阶段之前,这主要依赖你如何书写代码。
对许多oracle的工具来说,其中某些阶段会自动执行。绝大多数用户不需要关心各个阶段的细节问题,然而,知道执行的各个阶段还是有必要的,这会帮助你写出更高效的SQL语句来,而且还可以让你猜测出性能差的SQL语句主要是由于哪一个阶段造成的,然后我们针对这个具体的阶段,找出解决的办法。
DML语句的处理
本节给出一个例子来说明在DML语句处理的各个阶段到底发生了什么事情。
假设你使用Pro*C程序来为指定部门的所有职员增加工资。程序已经连到正确的用户,你可以在你的程序中嵌入如下的SQL语句:
EXEC SQL UPDATE employees
SET salary = 1.10 * salary
WHERE department_id = :var_department_id;
var_department_id是程序变量,里面包含部门号,我们要修改该部门的职


相关文档:

航空公司管理系统(VC++ 与SQL 2005)

系统环境:Windows 7
软件环境:Visual C++ 2008 SP1 +SQL Server 2005
本次目的:编写一个航空管理系统
      这是数据库课程设计的成果,虽然成绩不佳,但是作为我用VC++ 以来编写的最大程序还是传到网上,以供参考。用VC++ 做数据库设计并不容易,但也不是不可能。以下是我的程序界面,后面 ......

access与SqlServer 之时间与日期及其它SQL语句比较

1、Datediff:
1.1算出日期差:
1.access:       datediff('d',fixdate,getdate())
2.sqlserver:    datediff(day,fixdate,getdate())
ACCESS实例:    select * from table where data=datediff('d',fixdate,getdate())
sqlserver实例: select * from ......

oracle 一条sql生成10W条测试数据

做数据库开发或管理的人经常要创建大量的测试数据,动不动就需要上万条,如果一条一条的录入,那会浪费大量的时间,本文介绍了Oracle中如何通过一条SQL快速生成大量的测试数据的方法。
产生测试数据的SQL如下:
SQL> select rownum as id,
  2          &nbs ......

通过分析SQL语句的执行计划优化SQL语句(一)


在数据库的日常维护中,调整个别性能较差的SQL语句是一项极富挑战性的工作。其中的关键在于如何得到SQL语句的执行计划和如何从SQL语句的执行计划中发现问题。总是想将日常经验的点点滴滴总结一下,但是直到最近才下定决心,总共花了3个周末时间,才将其整理成册,便于自己日常工作。现在将其发表出来希望能与更多的朋友分 ......

SQL 获取当前日期,年、月、日、周、时、分、秒

select GETDATE() as '当前日期',
DateName(year,GetDate()) as '年',
DateName(month,GetDate()) as '月',
DateName(day,GetDate()) as '日',
DateName(dw,GetDate()) as '星期',
DateName(week,GetDate()) as '周数',
DateName(hour,GetDate()) as '时',
DateName(minute,GetDate()) as '分',
DateName(second,Ge ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号