问题1:
如果我年要做一个统计前10名的操作我怕太慢,所以我打算每月统计前1000名然后最后在年底在前1000名里面统计前10名。现在想问问这连个sql是否除了表名,他的sql是一样的是吧?比如伪每月count 1000sql:
insert countTable
{
select count(*),filed1,filed2....
from bigTable
where fd1 = xx and fd2 = xx and fd3 = xx
and 月日期
rownum <=1000
}然后年的时候就是
伪sql:
select count(*),filed1,filed2....
from countTable
where fd1 = xx and fd2 = xx and fd3 = xx
rownum <=10
这样没问题吧?问题2
如果很多条sql并发执行。效率会不会比只执行1条要低?如果都对一个表做select操作是否会造成锁表等?问题3
where后面的语句需要做什么优化吗?比如顺序?用的是oracle9i ,因为听说好像9i自己有个分析器,会自动调优所以不用管理where后面的顺序。问题4
我的问题1能
利用物化视图做归并的功能。处理。吗?
怎么做啊?
解决方案 »
- 本人是oracle初学者,用jsp连接时出现ORA-01017: invalid username/password; logon denied错误
- 表连接查询的效率问题
- 一个看起来简单实际上复杂的问题,邀请有兴趣的一起研究,高手直接给语句也可以哈。
- 菜鸟问题:sqlplus中使用select仅仅查到一条信息
- 求助 SQL語句,在線等。。。謝謝。。。
- 求一SQL语句
- proc编译正常,执行Illegal instruction(coredump)
- 请各位老大详细描述windows下SID,Instance,Service的关系!多谢了
- Oracle触发器怎样实现这样的功能:把插入的记录分开两条记录存储,而后删除触发的记录
- por*c编程连接oracle数据库成功,但为什么SELECT总是查询不到?急!谢谢!
- 帮忙改一句sql,提取规律性数据,谢谢。
- 求oracel 10G安装盘下载地址
from bigTable
where fd1 = xx and fd2 = xx and fd3 = xx
and 月日期
rownum <=1000
这种sql语句执行肯定有问题啊。2. 就取1000条,有什么用呢?没有按照某种规则排序,得来的结果也没什么保障
[quot]问题2
如果很多条sql并发执行。效率会不会比只执行1条要低?如果都对一个表做select操作是否会造成锁表等?
不会造成死锁。没必要用物化视图。直接利用Oracle的rank函数不是挺好的吗?如
select deptno, sum(sal) as total_sal, rank() over (order by sum(sal) desc) as rank from emp group by deptno
然后分段合并。
select * from
(select count(*),filed1,filed2....
from bigTable
where fd1 = xx and fd2 = xx and fd3 = xx
and 月日期
order by 月日期)
where rownum <=1000--排序完再取伪列的前1000
如果很多条sql并发执行。效率会不会比只执行1条要低?如果都对一个表做select操作是否会造成锁表等?如果单纯SELECT的话说不会对表上锁定,除法你上锁了,例如SELECT ..... FROM ....FOR UPDATE;
这个处理不好的话会锁表3:我记得是9I在乎顺序吧,10G会自动,和你的反过来了4:因为你给点是例子,无法知道你运行得到数据量和运行的时间以及复杂度,如果操作复杂并且需要周期长的话建议使用物化视图,但是一般不建议使用物化视图,
你这伪码也太伪了吧。
他可能要group by吧To LZ:
问题1: 是不是你的数据量很大? 不大的话 不需要再做个表了吧当然如果按照你的方法 应该+个order by吧 否则rownum是随机的 没有任何意义问题2: 锁表的话 for update会的 关于效率问题 如果多线程 应该么关系吧问题3:只知道8i中会有条件顺序的关系 9i 还是10g已经不存在了
问题2
如果很多条sql并发执行。效率会不会比只执行1条要低?如果都对一个表做select操作是否会造成锁表等?
--既然是并发执行了,效率当然要高于单条执行要高啊,要不然Oracle里的并发执行还有什么意思。
问题3
--9i中一般情况下可以不用注意表的顺序了,基于成本的优化器会自动选择较小的表作为驱动表。当然有时Oracle也会选错,可以使用/*+ ordered */强制where后第一个表为驱动表。
问题4
--建物化视图还不如直接建表了。
2、我说的并发执行是说。程序里会并发调用多个sql。我觉得同时在db里执行多个sql效率会比只执行一个低但不知道会不会低很多。
3、不是说用那个表策动。而是说where语句后面的条件。