如何对这样的SQL语句进行优化?

[复制链接]
查看11 | 回复3 | 2011-5-7 01:45:08 | 显示全部楼层 |阅读模式
select function1(colum1),function2(colum)
from test where test.id in (select id from test2)
function1(colum1)
begin
select some table;
return values;
end;
function2(colum2)
begin
select some table;
return values;
end;
有时候函数好几个,而且函数内又查了多张表、做了一些计算
都能用上索引。
在TEST返回数据较多行的情况下(几十万以上吧),速度不可接受。
拟采取的措施
1、对TEST表不用索引,采用并行查询,使用多个进程减少处理时间。
各位大哥可否有期它方法?谢谢!
回复

使用道具 举报

千问 | 2011-5-7 01:45:08 | 显示全部楼层
where test.id in (select id from test2) ;
对上面那句,考虑一下表连接
回复

使用道具 举报

千问 | 2011-5-7 01:45:08 | 显示全部楼层
1。索引不是万能的,在function中的select有索引不代表性能不错
2。test表取消索引可能时间更长,而且并行需要多cpu支持才效率高。
3。最重要的是要考虑一下必须这样做么?有没有好的替代方法?
回复

使用道具 举报

千问 | 2011-5-7 01:45:08 | 显示全部楼层
非常感谢lucky_lau深夜回复!
我想把函数做成物化视图性能,再关联相询,可能有很大提升,而且对资源占用也会少,实验中。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行