导航
  • 主页
  • 基础类
  • 应用实例
  • 新技术前沿

潇洒老乌龟等人进来帮我看看。

itmancn 2007-12-25 09:39:08
http://topic.csdn.net/u/20071219/11/4029aed4-7df6-44b9-9730-4496441559e5.html

这个我已经解决了。
现在考虑的是效率问题。如果group by有20个,大概有几十万数据,速度会有影响么。

问题二:我做了一个功能。
就是列出一个列表,在列表中选择几条记录(可能1条,也可能几百上千条,甚至全选,最多有1万)
然后根据选择的列出详细的信息。我用的是select × from table where exist in(XXXXX) XXXXX是操作人选择的记录。

这样组织起来字符串会很长很长。当然这种是极端的情况。但是也要考虑。
各位有什么好的建议么。一个sql语句要求多长。而且exist语句里有几千个选项,那效率应该很低了吧。如何避免,或者如何优化。

谢谢。没分了。
...全文
47 点赞 收藏 7
写回复
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
itmancn 2007-12-25
我先测试看看。谢谢。
回复
dawugui 2007-12-25
第一个问题group by的有什么建议么。
需求是这样:刚开始时,就按照一两个group by汇总,然后客户可以添加需要汇总的字段进来,一次一个。
是否可以考虑把第一次的数据放到临时表中呢。
----
应该不可以,因为你后面加进来的group by 不能从这个临时表里面细分数据.

id , name , type , val
1 1 1 1
1 1 2 1
2 2 2 2
按id,name分组
1 1 3 2
2 2 2 2
这个结果就是你所说的临时表.
如果要按id,name,type分组,从临时表取数据就不对了.
因为type= 1 ,2 这两个值没有了.
回复
dawugui 2007-12-25
那第一个问题group by的有什么建议么。
需求是这样:刚开始时,就按照一两个group by汇总,然后客户可以添加需要汇总的字段进来,一次一个。
是否可以考虑把第一次的数据放到临时表中呢。
----
应该不可以,因为你后面加进来的group by 不能从这个临时表里面细分数据.

第二个问题,是不是把XXXXX插入到tb2中,然后再用select * from tb1 where col in (select col from tb2),是么?
这样有什么差别么,一条sql语句会有多长呢。


谢谢。

---
没有差别,一条SQL规定的长度原则上来说足够你用了.
只用动态sql规定是8000个字符,不过可以用两(多)个动态sql合起来.
回复
itmancn 2007-12-25
那第一个问题group by的有什么建议么。
需求是这样:刚开始时,就按照一两个group by汇总,然后客户可以添加需要汇总的字段进来,一次一个。
是否可以考虑把第一次的数据放到临时表中呢。


第二个问题,是不是把XXXXX插入到tb2中,然后再用select * from tb1 where col in (select col from tb2),是么?
这样有什么差别么,一条sql语句会有多长呢。


谢谢。
回复
dawugui 2007-12-25
问题二:我做了一个功能。
就是列出一个列表,在列表中选择几条记录(可能1条,也可能几百上千条,甚至全选,最多有1万)
然后根据选择的列出详细的信息。我用的是select × from table where exist in(XXXXX) XXXXX是操作人选择的记录。

这样组织起来字符串会很长很长。当然这种是极端的情况。但是也要考虑。
各位有什么好的建议么。一个sql语句要求多长。而且exist语句里有几千个选项,那效率应该很低了吧。如何避免,或者如何优化。
---------------------------------------------
把这些数据插入一个表.
select * from tb1 where col in (select col from tb2)
回复
dawugui 2007-12-25
现在考虑的是效率问题。如果group by有20个,大概有几十万数据,速度会有影响么。

group by 20多个字段的话,就没什么效率可讲了.
回复
dawugui 2007-12-25
看看先.
回复
发动态
发帖子
MS-SQL Server
创建于2007-09-28

3.2w+

社区成员

MS-SQL Server相关内容讨论专区
申请成为版主
社区公告
暂无公告