优化 查询条件 问题(好建议可另加分)

Jameszht 2002-10-28 10:39:34
现做一个动态报表,用户定义条件,条件有三种;
1。总控条件
2。行条件
3。列条件
用户输入的一些条件可能是重复的,要求能删除重复并提供一些优化。
如:用户的定义,可能有时有点弱~~
总控条件: (部门='生产部') and (离职时间 is not null )
and ( (离职原因='辞职' and 离职时间 >'2002/01/01') or
(离职原因='解聘' and 离职时间 >'2002/01/01'))
行条件: 离职原因='辞职' and 离职时间 >'2002/01/01'
列条件; 职称='高级工程师' and (right(职务,2)='经理')

总控的意思是:生产部2002年离职的人
列的意思是: 离职原因为辞职
行的意思是: 职称是高级工程师 且 职务是经理一级
单元格的条件为:
(部门='生产部') and (离职时间 is not null ) and ((离职原因='辞职' and 离职时间 >'2002/01/01') or(离职原因='解聘' and 离职时间 >'2002/01/01'))
and (离职原因='辞职' and 离职时间 >'2002/01/01') and (职称='高级工程师')
and (right(职务,2)='经理')
分析一下可以看出:
1、 离职时间 is not null 多余
2、(离职原因='辞职' and 离职时间 >'2002/01/01') or
(离职原因='解聘' and 离职时间 >'2002/01/01')) 对本单元多余
3、right(职务,2)='经理' 可改为 职务 like '%经理'

函数限定只能有:left,right,substring

急!急!!急!!!
欢迎各位高手提供建议、或提供一种查询条件的替代高效条件(如上述3)。

...全文
113 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
蓝天 2002-10-29
  • 打赏
  • 举报
回复
要设条件最好对应你的每个列有一个选项
比如
部门
职务
离职时间
离职原因

默认为不选(不选对应查询语句就是没有这项选择)
时间做成时间段(从某年月日到某年月日)

这样查起来又方便又清晰还没有重合条件,傻瓜用户也能用
Jameszht 2002-10-29
  • 打赏
  • 举报
回复
这是一个动态报表(一个简单例子)如:
XXXX部门2002离职人员统计表

-------------------辞职 辞退 退休 开除 死亡 其他
经理
高级工程师
工程师
其他
主管
高级工程师
工程师
其他
职员
工程师
其他

行列都是动态的,用户自己把握,这个二维表用户定义行列条件,再加上总控得到单元格条件,再查数据库得到人数。
Jameszht 2002-10-28
  • 打赏
  • 举报
回复
优化是必要的,如 姓名 <>(空) 可写为
姓名 is not Null and 姓名 <>''
改为 姓名 >''
对大数据量可明显提升查询速度。
Jameszht 2002-10-28
  • 打赏
  • 举报
回复
说明:本贴中举的只是其中的一例 用以说明条件可能重复。

在上述单元格中算的是生产部2002年辞职的、有高级工程师职称的经理
所以条件是:
部门='生产部' and 离职原因='辞职' AND 离职时间 >'2002/01/01'and 职称='高级工程师' and 职务 like '%经理'

表名是'生产部离职人员统计表”总控条件用来控制总表,所以加了(离职原因='辞职' or 离职原因='解聘') 其他地方可能用到,但对此单元格是多余的,因为已经有了离职原因='辞职' 所以(离职原因='辞职' or 离职原因='解聘')是肯定满足的 。

我的目的是如何去掉用户定义的单元格(所有的)的重复的条件。

急!急!!急!!!
欢迎各位高手提供建议、或提供一种查询条件的替代高效条件(如上述3)。
蓝天 2002-10-28
  • 打赏
  • 举报
回复
没必要优化,SQL会帮你优化的
szjakey 2002-10-28
  • 打赏
  • 举报
回复
是否考虑将高过滤条件提前缩小二次判断数据源范围,如先判断
(部门='生产部')后right(职务,2)='经理',职务 like '%经理'
...
qqqdong 2002-10-28
  • 打赏
  • 举报
回复
部门='生产部' and (离职原因='辞职' or 离职原因='解聘' or 离职原因='辞职' ) AND 离职时间 >'2002/01/01'and 职称='高级工程师'
and 职务 like '%经理'
CSDNM 2002-10-28
  • 打赏
  • 举报
回复
重复的条件不一定要去掉,特别是你用视图查询的时候!
CSDNM 2002-10-28
  • 打赏
  • 举报
回复
搞得这么复杂干什么?
总控条件
行条件
列条件
单元格的条件
vvyjp 2002-10-28
  • 打赏
  • 举报
回复
一定要设清WHERE
qihong_2000 2002-10-28
  • 打赏
  • 举报
回复
优化是很必要的,我的体会是:
1、范围的判定条件要用:>或<,不要用between 和 and
2、能准确相等的条件就用等号,象:部门='生产部' and 离职原因='辞职' ,而模糊的条件一般用Like.
3、尽量不用子查询条件。

34,594

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧