SQL基础及优化
archerboy300
这个作者很懒,什么都没留下…
展开
-
left join 在and和where加条件的区别
select*from aleft join bon a.KEY_FIELD = b.KEY_FIELD-- and b.CON= 'P' (1)(已注释)WHERE a.DEL_FLG =0and b.CON ='P' (2) 因为是左连接,所以不管条件是否满足 表a都会显示所有的记录,而where条件筛选只会显示为'p'的记录...原创 2009-11-13 22:18:04 · 100 阅读 · 0 评论 -
left Join、full join、cross join备忘
这几个join实际运用中容易产生问题,特此备忘。 A left join B ,对于on 的条件中,如果有A的限制条件,是不会对A有限制作用的。如果有B的限制条件,就会对B产生限制作用。A为主表,如果没有where条件限制,所以A的全表记录都会显示。 对cross join,不需要有限制条件,这会产生笛卡尔积。 对full join,相当于left join+rightj...原创 2009-12-04 21:13:29 · 180 阅读 · 0 评论 -
Oracle 中Start with 的巧用
Oracle的start with对于处理层级关系非常方便。 start with connect by prior upper_indicator_id=indicator_id 查询上级节点的ID start with connect by prior indicator_id=upper_indicator_id查询出下级节点的ID 下面的...2009-12-04 21:21:35 · 138 阅读 · 0 评论 -
SQL 优化的点滴积累
SQL优化的重要思路: 1、使用索引 2、减少查询的记录数目(以往的项目忽略了的一种方式) 减少记录数目,可以减少sum的条数,减少使用group by的条数,减少使用函数的条数 子查询将不使用索引,所以Union All两个子查询后的结果集,是无法使用索引的,如果再和其他表关联,join字段也无法使用索引,所以使用union all的两个子查询分别jo...2009-12-04 21:32:26 · 79 阅读 · 0 评论 -
读《DB2数据库性能调整和优化》札记--join的几种方式
以下是部分引用《DB2数据库性能调整和优化》,对于oracle也是这三种方式,这三种方式出现在执行计划中,因此十分有必要搞清楚内在算法原理。 对于多表的join一般是采取先join2张表,然后在join下一张表。 1、NestLoops 相当于2个循环,通常是在有索引时进行。在嵌套循环连接中,将扫描第一个(或外部)表,以查找满足查询规则的行。对于在外...2010-04-25 23:32:12 · 515 阅读 · 0 评论 -
不要迷信所谓的“SQL优化原则”
网上我们经常可以找到大量的关于sql调优的文章和帖子,实际上如果没有真正的实践,可以说这些所谓的经验总结,在实际中不一定总是正确和有效。因此很容易误导初学者,对于某个sql的怎么执行还是要看实际执行计划,下面就大家容易出现的误解做下说明。 1) 连接或者利用子查询或者视图的结果一定不使用索引吗?不一定,如果join 一个是子查询,一个是物理表,物理表...2010-04-26 19:25:41 · 107 阅读 · 0 评论 -
SQL执行顺序
1、from子句 2、where2.1、rownum top3、group by4、聚合函数5、having6、order by rownum top在where之后,因此在where中不能使用select rownum as no no这个字段但是可以直接使用where rownum<10 记住最后是orderby...原创 2010-12-14 21:29:46 · 93 阅读 · 0 评论 -
truncate与delete的区别
truncate,delete,drop的异同点 说明:本文摘自oracle技术用户讨论组 注意:这里说的delete是指不带where子句的delete语句 相同点:truncate和不带where子句的delete, 以及drop都会删除表内的数据 不同点: 1. truncate和 delete只删除数据不删除表的结构(定义) ...原创 2010-12-21 10:26:50 · 107 阅读 · 0 评论