【0204-浙江-数据库】数据库开发设计规范培训-V1-20141208.ppt

【0204-浙江-数据库】数据库开发设计规范培训-V1-20141208.ppt

查询时使用联合索引的一个字段,如果这个字段在联合索引中所有字段的第一个,那就会用到索引,否则就无法使用到索引。 例如联合索引 IDX(字段A,字段B,字段C,字段D),当仅使用字段A查询时,索引IDX就会使用到;如果仅使用字段B或字段C或字段D查询,则索引IDX都不会用到。 这个规则在oracle和mysql数据库中均成立。 2.很耗资源的。 1 ,什么是执行计划 所谓执行计划,顾名思义,就是对一个查询任务,做出一份怎样去完成任务的 详细方案。举个生活中的例子,我从珠海要去英国,我可以 选择先去香港然后转机,也可以先去北京转机,或者去广州也可以。但是到底 怎样去英国划算,也就是我的费用最少,这是一件值得考究 的事情。同样对于查询而言,我们提交的 SQL 仅仅是描述出了我们的目的地是 英国,但至于怎么去,通常我们的 SQL 中是没有给出提示信息 的,是由数据库来决定的。 我们先简单的看一个执行计划的对比: SQL set autotrace traceonly 执行计划一: SQL select count(*) from t; COUNT(*) ---------- 24815 Execution Plan 0 SELECT STATEMENT Optimizer=CHOOSE 1 0 SORT (AGGREGATE) 2 1 TABLE Access (FULL) OF T 执行计划二: SQL select count(*) from t; COUNT(*) 24815 Execution Plan 0 SELECT STATEMENT Optimizer=CHOOSE (Cost=26 Card=1) 1 0 SORT (AGGREGATE) 2 1 INDEX (FULL SCAN) OF T_INDEX (NON-UNIQUE) (Cost=26 C ard=28180) --------------------------------------------------------------------------------------------- Hint 是Oracle 提供的一种SQL语法,它允许用户在SQL语句中插入相关的语法,从而影响SQL的执行方式。 因为Hint的特殊作用,所以对于开发人员不应该在代码中使用它,Hint 更像是Oracle提供给DBA用来分析问题的工具 。在SQL代码中使用Hint,可能导致非常严重的后果,因为数据库的数据是变化的,在某一时刻使用这个执行计划是最优的,在另一个时刻,却可能很差,这也是CBO 取代RBO的原因之一,规则是死的,而数据是时刻变化的,为了获得最正确的执行计划,只有知道表中数据的实际情况,通过计算各种执行计划的成本,则其最优,才是最科学的,这也是CBO的工作机制。 在SQL代码中加入Hint,特别是性能相关的Hint是很危险的做法。 -------------------------------------------------------------------------------------- 5.io,执行时间 cost 6.YYCK = to_char(V_CKH) --------------------------------------------------------------------------------------------------------------------------------- 8.如果我们需要将两个 select 语句的结果作为一个整体显示出来,我们就需要用到 union 或者 union all 关键字。 union( 或称为联合 ) 的作用是将多个结果合并在一起显示出来。 union 和 union all 的区别是 ,union 会自动压缩多个结果集合中的重复结果, 而 union all 则将 所有的结果全部显示出来,不管是不是重复。 Union :对两个结果集进行并集操作,不包括重复行,同时进行默认规则的排序; Union All :对两个结果集进行并集操作,包括重复行,不进行排序; ---------------------------------------------------

您可能关注的文档

文档评论(0)

1亿VIP精品文档

相关文档