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

使用SQL时必须考虑的五个关键因素

 使用SQL时必须考虑的关键因素
一,获得结果集所需访问的数据量,在没有确定目标容量之前,很难断定查询执行的效率;
二,定义结果集所需的查询条件,也就是如何限定结果集,如何合理的使用sql子句;
三,结果集的大小,取决于表的大小和过滤条件的细节,但不都是这样,典型的情况是,若干个独立使用时效率不高的条件,结合起来使用时会产生很高的效率。比如说:“是不否获得理科学位或文科学位”作为查询学生姓名的条件,结果集很大。但同时使用这两个条件(双学位),则产生的结果集大小就会大幅缩小。还有一个很意思的地方,用户最终的感觉也非常重要,用户的耐心,在很大程度上和预期返回的记录条数有关:用户只检索一条记录,则他期望非常快,而有时检索一条记录也需要访问整个数据库,令最终用户沮丧的事情莫过于等了很久却看到“无相符数据”的结果,所以好的开发者应该让返回少量记录或不返回记录的查询尽量快,原则就是,无论何时,只要查询有可能返回零结果集时,都应该先检查那个最大可能导致空结果集的条件。
四,获得结果集所涉及的表的数量,表的数量影响最大的无疑是join操作。其实,现代DBMS都能比较高效地连接很多表,这可能会当前许多初学者的认识相悖。当然连接大量表时会产生一些额外的问题,
 1)当需要连接很多表时,按常理你应该怀疑你的设计的正确性;
 2)对于优化器来说,随着表数量的增加,复杂度将呈指数增长。
 3)编写涉及多表的复杂查询,若可以进行连接的方式有好多种,增加了分析优化器进行优化的难度,最终选择出的连接路径很可能是错误的。
 当有还有一个问题需要注意,有时我们需要在使用复杂查询时,如果既可以通过已定义的视图来获得数据,也可以通过分解视图,将其组成部分变成sql语句加到查询主体中,那么常常应该采用后者,因为这样可以减少不必要的联接视图的操作,尽管需要sql编程技巧有所要求。(其实,oracle中的物化视图中查询重写中用到了跟这相反的机制,当然这二者的目的是不一样的。)
五,多少用户会同时修改这些数据。也就是说写数据库操作必须关注并发性,是否存在block的访问争用、阻塞,或者闩定(DBMS内部资源阻塞)。还有一种情况,比如说,排序操作可能会没有足够内存可用,于是转而求助于磁盘,引发新的资源争用。


相关文档:

SQL Server 2005利用分区对海量数据的处理


超大型数据库的大小常常达到数百GB,有时甚至要用TB来计算。而单表的数据量往往会达到上亿的记录,并且记录数会随着时间而增长。这不但影响着数据库的运行效率,也增大数据库的维护难度。除了表的数据量外,对表不同的访问模式也可能会影响性能和可用性。这些问题都可以通过对大表进行合理分区得到很大的改善。当表和索引 ......

pl/sql变量语法

 定义标量变量语法
在PL/SQL语块中定义变量和常量的语法如下
indentifier [CONSTANT] datatype [NOT NULL] [:=|DEFAULT expr]
indentifier 用于指定变量或常量的名称
CONSTANT:用于指定常量。当定义常量时,必须指定它的初始值,并且其数值不能改变
datatype:用于指定变量或常量的数据类型。
NOT NULL: 用于强 ......

sql创建触发器

 create trigger updatemaster                    //创建触发器名字是 updatemaster
on votedetails                 &nb ......

经典sql语句

一、循环
create table tb(
   col1 varchar(1),
   col2 varchar(2)

insert tb(col1,col2)values('0','0')
 go 10000000
二、数据合并
if object_id('[order]') is not null drop table [order]
go
create table [order]([orderid] int,[ordertype] varchar(1))
insert [ord ......

谈谈 SQL 数据库的备份与还原

 【学习点点滴滴】 在很多情况与环境中,我们都要对已有的数据库进行备份,这样以防止当我们因人为或者服务器等诸多原因而导致的数据丢失,
   从而给我们带来很大的麻烦,我也是接触SQL没多长时间,对与它强大的数据可恢复功能 也只是略知一二,当然在这里也只是做对它做略略的记录,
  纯粹是 ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号