新足迹

 找回密码
 注册

精华好帖回顾

· 告别2020,在法拉利1.0上骑行的露营日子 (完) (2021-1-21) clocktower · 澳洲生活Q&A-买房 (2005-1-3) astina
· 一点GPS的使用心得 (2005-11-9) melbren · 阿狗推荐——怀旧抒情曲9+2 (英文篇) (2008-7-10) 阿Ka
Advertisement
Advertisement
12
返回列表 发新帖
楼主:典

求解释SQL Union VS OR [复制链接]

发表于 2012-3-23 11:00 |显示全部楼层
此文章由 无视 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 无视 所有!转贴必须注明作者、出处和本声明,并保持内容完整
很复杂的逻辑现在我倾向于放到app那边作。原因有两个:

1.db的logic不能unit test.可能只能做很复杂的integration test.

2.可扩展性差。logic在db这边产品刚开始可能帮助你提升performance,但随着产品scale的增加db的负担越来越重,resource racing的问题可能不可避免,从硬件上scaleup效果局限。

但这一直是很有争议的话题,我自己也在不同的阶段摇摆不定,现在我比较倾向于放在app这边。

评分

参与人数 3积分 +9 收起 理由
+ 3 谢谢奉献
porcorosso + 3 我很赞同
bffbffbff + 3 谢谢奉献

查看全部评分

Advertisement
Advertisement

发表于 2012-3-23 11:15 |显示全部楼层
此文章由 典 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 典 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 无视 于 2012-3-23 10:00 发表
很复杂的逻辑现在我倾向于放到app那边作。原因有两个:

1.db的logic不能unit test.可能只能做很复杂的integration test.

2.可扩展性差。logic在db这边产品刚开始可能帮助你提升performance,但随着产品scale的增加db的 ...


同意,用APP做是正道,在DB里做只能说有时候可以,

发表于 2012-3-23 13:16 |显示全部楼层
此文章由 rainmore 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 rainmore 所有!转贴必须注明作者、出处和本声明,并保持内容完整
同意,用app的维护性更高。

发表于 2012-3-23 13:37 |显示全部楼层
此文章由 bigwood 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 bigwood 所有!转贴必须注明作者、出处和本声明,并保持内容完整
你确定是从一个表中拿数据吗?为什么有这么多table scan?

如果两个单独condition的查询row count,比join起来的row count小得多,而且两个union查询条件比较简单,比较利于sql server建立plan, 那union 会比 or 快得多,有的时候甚至建立#temp,利用physical io都要快。你甚至可以试一下不用union, 直接插入两个#temp。如果是这个情况join的条件可能有问题。

如果一个大的,bad join,会使整体的返回数据量增大,而且没有好的index 来查询, 同时复杂的查询条件,如果没有很可靠的statistics,会产生一个很差的plan.

发表于 2012-3-23 13:41 |显示全部楼层
此文章由 porcorosso 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 porcorosso 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 无视 于 2012-3-23 11:00 发表
很复杂的逻辑现在我倾向于放到app那边作。原因有两个:

1.db的logic不能unit test.可能只能做很复杂的integration test.

2.可扩展性差。logic在db这边产品刚开始可能帮助你提升performance,但随着产品scale的增加db的 ...


觉得也比较flexible

发表于 2012-3-23 13:55 |显示全部楼层
此文章由 无视 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 无视 所有!转贴必须注明作者、出处和本声明,并保持内容完整
logic放在app这边缺点也是比较显著:

1.根很多传统理念相违背,很多人认为store proc就是database的api,提供数据封装功能,而不是简单的data store. 而且database的生命周期通常长于app,这样app的平台移植就很方面(我觉得也很罕见)。

2.未经logic处理的大量数据,会有network latency的问题(还是要适当的放些condition在里面的)

3.大量logic会给app负担加大,尤其是大数据量运算的话,这可能要把app那边的server更加细分。

我的感觉是两种观点都有自己的道理,不能只走一个极端。
Advertisement
Advertisement

发表于 2012-3-28 18:26 |显示全部楼层
此文章由 kuxxc 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 kuxxc 所有!转贴必须注明作者、出处和本声明,并保持内容完整
Surely you don't want to use UNION when OR is the logical choice.

Fix your index.

发表回复

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

本版积分规则

Advertisement
Advertisement
返回顶部