首页 新闻 会员 周边 捐助

数据库优化问题

0
[已解决问题] 解决于 2009-05-03 11:42

今天看到一篇文章,里面一句话让我有些想法:它说“没有必要时不要用DISTINCT和ORDER BY,这些动作可以改在客户端执行。它们增加了额外的开销。这同UNION 和UNION ALL一样的道理。”而我本人在写存储过程时都大量使用order by,所以我想请教一下,什么操作要让非数据库端来做,什么操作放在数据库做好?有什么衡量的标准,因为太多时候我都不知道某个操作该不该由数据库来做(前提是数据库能做)。期望高手没给我个比较好的答复。   

问题补充: 函数与存储过程效率不同在哪里?我听说过如果有大量的判断,就用函数,而不要用存储过程,这句话有道理吗?
GeorgeHuang的主页 GeorgeHuang | 初学一级 | 园豆:55
提问于:2009-04-25 17:29
< >
分享
最佳答案
0

通常来说,这跟业务需求和应用架构设计有关。

在任何你使用ORDER BY 和 DISTINCT 的地方,你都需要先问问自己:

1,这对存储过程中包含的逻辑来说是必需的吗?

2,这对数据库外围应用程序来说是必需的吗?

如果对(1)(2)的回答都是肯定的 ,那么你必须使用 DISTINCT 和 ORDER BY,并且无视数据库性能。

如果因此而导致应用系统整体性能达不到需求所定义的目标,那么你必须要求架构师修改应用程序架构,将部分业务逻辑从你的存储过程中移出去。

Launcher | 高人七级 |园豆:45050 | 2009-04-25 20:56
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册