java程序员-http://www.it-ebooks.info/

年轻的我,脚踩大地,仰望天空,路还很长....

博客园 首页 新随笔 联系 订阅 管理

sql语句在面试里面问道的问题:

sql的解析的顺序

1.where里面的条件是从右向左扫描解析

2.from里面的大表在前,小表在后,解析的顺序是从右向左解析。

3.left/right/inner join 链接基于hashjoin/loop/merge三种方式构建链接方式(最终翻译成oracle内部的一些函数)。

4.存储过程的有点就是sql解析完一次之后,以后就可以恭喜,不需要重新构建sql解析过程(执行计划,类似一个翻译的过程),在开发中我们也可以给予绑定变量,减少sql硬解析的开销。

5.物化视图/分区表

6.游标就是SQL语句执行过程中的一个内存区域的指针,比如存储过程里面常用的游标,但是游标比较消耗内存,占用资源,开销大。解决的方法可以使用临时表机制。

==========================================================================

rank            一般项目里面很少用,比较高级的语法 partion by 很好用,避免过多的group by

dense_rank

over 

partition by

order by

===

rowid

===

rownum     常用

===

case when  常用

===

left join        常用(项目开发中大量使用left join 做一些报表查询,比较少使用子查询)

inner join     常用

===

exist in 用,但是不是很多,子查询使用不多,基本都是join连接

===

存储过程

临时表   存储过程常用----其实个人感觉存储过程一个就是游标,一个就是临时表存储数据

===

系统视图,部分开发场景要使用---比如开发一个类似于PL/SQL的客户端软件就需要一些系统特殊的视图以及Metedata元数据信息

===

触发器  少用----没办法了就是要触发器

===

自定义一些函数,也就是对oracle里面的函数进行封装成我们自己的函数,方便后期项目的维护

posted on 2014-09-23 17:01  gstsyyb  阅读(220)  评论(0编辑  收藏  举报