首页 新闻 会员 周边 捐助

对于SQL函数的运用(性能)。

0
悬赏园豆:10 [已关闭问题] 关闭于 2017-12-22 10:59

大家平常写SQL语句时,都会用到聚合函数什么的,语句用多了函数会不会造成性能不好?

比如:

select xx_UserId, nvl(sum(xx_bonus),0) bonus from xx_bonusledger
where xx_UserState = 'E' group by xx_UserId

这段Sql语句在查询时数据量多的话很慢。

一般哪些内置(自带的)函数少用得好?

请教各位大神。

SQL
Hi_Carl的主页 Hi_Carl | 初学一级 | 园豆:159
提问于:2017-12-15 12:54
< >
分享
所有回答(4)
0

数据量多肯定就慢啊,跟你用的系统函数关系不是很大,它既然定义了函数肯定就是拿来用的,你只有通过其他方法来优化你的查询速度

我只是慕名而来 | 园豆:303 (菜鸟二级) | 2017-12-15 12:59
0

要看查询条件了,数据多了要加索引,然后看查询条件有没有用函数,比如字段time在数据库是timestamp我要查时间大于2017-12-15,where里面可能就会写left(time)>'2017-12-15',这样就不会走索引,查询速度就很慢

_legends | 园豆:509 (小虾三级) | 2017-12-15 13:27
0

nvl()是干嘛用的?

西漠以西 | 园豆:1675 (小虾三级) | 2017-12-15 14:46

oracle的语法,nvl(value1,value2);value1为空就返回value2,都为空就返回null

支持(0) 反对(0) Hi_Carl | 园豆:159 (初学一级) | 2017-12-22 10:58

@.NET小码农: 

试试在 xx_UserState  列上建索引,包含 xx_UserId 和 xx_bonus 这两列。

支持(0) 反对(0) 西漠以西 | 园豆:1675 (小虾三级) | 2017-12-22 11:04
0

聚合函数。

我认为应该好好理解字面意思,这玩意儿活着都不容易。假设你有一个链表你设想一下怎么实现出来,能不能有空间换时间的办法,多的就不说了,或者你可以直接换个mapreduce体验一下。

花飘水流兮 | 园豆:13615 (专家六级) | 2017-12-15 18:00
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册