欢迎来到Doc100.Net免费学习资源知识分享平台!
您的位置:首页 > 程序异常 >

求一条优化话语

更新时间: 2014-01-05 02:17:12 责任编辑: Author_N1

 

求一条优化语句
假设有abcde五个地区,都有一个共同的客户张三,我现在要统计业绩,除了a地区可以把张三的销售算进业绩中去,其他地区对应销售的业绩都不能包含张三。
我能想到的语句是
select * from table where 地区='a'
union all
select * from table where 地区 in('b','c','d','e') and 客户<>'张三'

用union all会不会使查询效率降低?因为有的语句还要使用group by的。除了这种写法,还有没有更好的语句,比如能否用case之类的?


--参考方法--
引用:
能否用case when 地区='a' …… 这样类似的条件去判断所查询的结果?


可以的,不过这样和上面的union all 也是区别不大,可能性能还没有union all好。

select * from table 
where 1=case when 地区 in('b','c','d','e') and 客户<>'张三'
                  then 1
             when 地区 = 'a'
                  then 1
             else 0 
         end

--参考方法--
引用:
能否用case when 地区='a' …… 这样类似的条件去判断所查询的结果?
case when是在select中对数据进行筛选,本身减少不了数据量。如果数据量能够控制,group by,union all这些甚至order by也不会带来什么性能问题
上一篇:上一篇
下一篇:下一篇

 

随机推荐程序问答结果

 

 

如对文章有任何疑问请提交到问题反馈,或者您对内容不满意,请您反馈给我们DOC100.NET论坛发贴求解。
DOC100.NET资源网,机器学习分类整理更新日期::2014-01-05 02:17:12
如需转载,请注明文章出处和来源网址:http://www.doc100.net/bugs/t/7978/
本文WWW.DOC100.NET DOC100.NET版权所有。