锁定老帖子 主题:存储过程真的好快!
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (1)
|
|
---|---|
作者 | 正文 |
发表时间:2008-04-22
表结构 A{ v_id number; v_num number; } 数据 v_id v_num 1 2 2 20 5 4 1 -1 ..... 要求v_id的总分排名 v_id总分为:count=select sum(v_num) from a where v_id=? 排名为:select count(1) from (select sum(v_num) num from a group by v_id) where num>count 就这样语句用sql是很慢,而在存储过程中速度是sql的1/10 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2008-04-22
后头有你叫的时候。大量业务写入存储过程,对调试和修改均极为不方便。我觉得你这种业务用缓存的方式解决最好。处理一次,缓存起来。没了查询数据库,不是更快。等缓存失效了,才需要二次运算。缓存时限可以根据你的需求定,哪怕有1分钟,对高并发的访问都是可以大大缓解的。
|
|
返回顶楼 | |
发表时间:2008-04-22
用下面这个SQL可以一次检出所有的v_id的总分排名
SELECT ROW_NUMBER() OVER(ORDER BY X.NUM) AS 排名 , V_ID FROM ( SELECT SUM(V_NUM) NUM, V_ID FROM A GROUP BY V_ID ) X |
|
返回顶楼 | |
发表时间:2008-04-22
魔力猫咪 写道 后头有你叫的时候。大量业务写入存储过程,对调试和修改均极为不方便。我觉得你这种业务用缓存的方式解决最好。处理一次,缓存起来。没了查询数据库,不是更快。等缓存失效了,才需要二次运算。缓存时限可以根据你的需求定,哪怕有1分钟,对高并发的访问都是可以大大缓解的。
汽车厂的员工可不少呀,发到内存里是不是太浪费了呀! 机器只有2G |
|
返回顶楼 | |
发表时间:2008-04-22
我是说你把结果缓存起来。不是说要你把所有的员工缓存起来。ASP.NET和JavaEE都有页面缓存,生成这么一个页面的缓存用不了多大地方。
如果没页面缓存的话,把查询的结果集缓存应该也不需要很大的地方。 |
|
返回顶楼 | |
发表时间:2008-04-22
zb1015 写道 魔力猫咪 写道 后头有你叫的时候。大量业务写入存储过程,对调试和修改均极为不方便。我觉得你这种业务用缓存的方式解决最好。处理一次,缓存起来。没了查询数据库,不是更快。等缓存失效了,才需要二次运算。缓存时限可以根据你的需求定,哪怕有1分钟,对高并发的访问都是可以大大缓解的。
汽车厂的员工可不少呀,发到内存里是不是太浪费了呀! 机器只有2G 谁让你把select *缓存,人家是让你把count缓存…… |
|
返回顶楼 | |
发表时间:2008-04-23
速度不是企业应用的唯一且最要紧的诉求
|
|
返回顶楼 | |
发表时间:2008-04-25
刑天战士 写道 zb1015 写道 魔力猫咪 写道 后头有你叫的时候。大量业务写入存储过程,对调试和修改均极为不方便。我觉得你这种业务用缓存的方式解决最好。处理一次,缓存起来。没了查询数据库,不是更快。等缓存失效了,才需要二次运算。缓存时限可以根据你的需求定,哪怕有1分钟,对高并发的访问都是可以大大缓解的。
汽车厂的员工可不少呀,发到内存里是不是太浪费了呀! 机器只有2G 谁让你把select *缓存,人家是让你把count缓存…… 那排名怎么查呢? |
|
返回顶楼 | |
发表时间:2008-04-25
Joo 写道 速度不是企业应用的唯一且最要紧的诉求
他们答题是的指标的,一个月一人次答5000次,而且是手机上wap方式 |
|
返回顶楼 | |
发表时间:2008-04-28
zb1015 写道 刑天战士 写道 zb1015 写道 魔力猫咪 写道 后头有你叫的时候。大量业务写入存储过程,对调试和修改均极为不方便。我觉得你这种业务用缓存的方式解决最好。处理一次,缓存起来。没了查询数据库,不是更快。等缓存失效了,才需要二次运算。缓存时限可以根据你的需求定,哪怕有1分钟,对高并发的访问都是可以大大缓解的。
汽车厂的员工可不少呀,发到内存里是不是太浪费了呀! 机器只有2G 谁让你把select *缓存,人家是让你把count缓存…… 那排名怎么查呢? select vid from A group by vid order by sum(v_num) 把这个查询结果放到一个int数组里缓存起来,排名就是传入的vid在数组中的index+1 |
|
返回顶楼 | |