今天怎么说那,本来说是不上班的,下着雨,睡觉的好日子,可惜要上班,心情很不好,中午有个面试,还要笔试,感觉答的不好,面试的时候态度也不好,先给那两个面试的致个歉。被问的体无完肤,其实很多东西我都是会用的就是一下子不知道怎么来答了,可悲的是老用工具一些plsql的基本语法忘了,比如存储的,就是没想起来是create or re'place procedure ... (...) is ... begin ...end;等等的,
记录一些问题,先说说sql方面的
1、一个表test按id排序,并查询前8条
我是这样写的: select * from test t where rownum>9 order by id;
他是这样问的,为啥要用rownum,不用id>9,我就懵了不知道id可以之间取前八条,就问如果id是uuid,或者是number的时候,直接用id可以吗,他说id是用序列生成的,可以得,我就不知道了,回来我试了下,如果一个表的id都是大于8的怎么可以查出来结果那,我真心搞不懂了
2、sql优化,select * from test1 as t1 where t1.id in(select t2.id from test2 as t2);
当时感觉给表起别名很奇怪为啥要用as那,我开始怀疑我以前错过了什么,但是机子上试了下,好像确实不行,不知道怎么回事。尴尬中。。。。(求人解答是不是别的那可以这样写,本人用的是oracle)
下面说优化,当时时间急没写,我现在的水平理解一般优化就是建索引和替换一些关键字,如in,like等
上面的的也不一定非要替换in,在test1表数据很大而test2表数据小的时候完全可以这样写,但是当test2表数据大的时候就要用exists,可以这样来写
select * from test1 t1 where exists (select t2.id from test2 t2 where t2.id = t1.id);
3分页 oracle写法
select * from (
select rownum rn_, t.* from ( select * from sp_sbzl_bldyxx ) t
) where rn_ <= 20 and rn_ >= 0
接下来了解mybatis和hibernate的缓存机制(晚上开始)。