| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1409 人关注过本帖
标题:[求助]数据库查询问题,急晕了~
只看楼主 加入收藏
滚水六脚
Rank: 1
等 级:新手上路
帖 子:132
专家分:0
注 册:2004-8-16
收藏
得分:0 
已经用了储存过程,不过有了新问题:
http://bbs.bc-cn.net/viewthread.php?tid=101568
帮忙看看……
也不知道速度怎么样?要试!
2006-11-09 08:13
滚水六脚
Rank: 1
等 级:新手上路
帖 子:132
专家分:0
注 册:2004-8-16
收藏
得分:0 
还是在这里贴吧:
CREATE PROCEDURE [sp_Seekerinfo]
@LastUpdateDate varchar(50) , @GetSearch Nvarchar(800)
As
Begin
declare @s Nvarchar(1000)
set @s = 'SELECT Top 1000 seekerID,trueName,gender,age,MaxEduLevel,maxEduSchool,maxEduCourse,WorkPos,LastUpdateDate FROM v_seekerInfo WHERE isvalid = 1 '+@GetSearch+' GROUP BY seekerID,trueName,gender,age,MaxEduLevel,maxEduSchool,maxEduCourse,WorkPos,LastUpdateDate order by '+@LastUpdateDate+' desc'
Exec(@s)
exec sp_executesql @s
End
GO

其中:@GetSearch为搜索条件,但还是超时了!?
2006-11-09 09:11
滚水六脚
Rank: 1
等 级:新手上路
帖 子:132
专家分:0
注 册:2004-8-16
收藏
得分:0 
看了储存过程写跟没写一回事
2006-11-09 09:38
tang688
Rank: 5Rank: 5
等 级:贵宾
威 望:16
帖 子:1219
专家分:35
注 册:2004-12-25
收藏
得分:0 
我发现有好多人喜欢用一句SQL来做好多的事.其实这样很不好.
第一,过多过长的SQL自己也会搞错,思路容易搞不清楚.
第二,太多的连查会使数据库占用大量的内容.
第三,速度更慢,更易引起超时.
建议解决方案:
一,把查询语句尽量地简化SQL语句,使用多句SQL然后通过if ... then for ..next等语句代替其他的查询条件.
二,搞清楚是网页传输慢还是数据运行慢,根据原因来制定相应的解决方法,比如是数据库原因,用上述"一,"中介绍的方法,如果是网络原因,请减少每次传输的量,比如分页.
三,设置timeout时间为999

2006-11-09 09:41
tang688
Rank: 5Rank: 5
等 级:贵宾
威 望:16
帖 子:1219
专家分:35
注 册:2004-12-25
收藏
得分:0 
可能很多人都会以为什么会这么笨到可以用一句SQL解决的问题为什么要用多句的if then和for ..next来解决呢?是不是太笨了?
但根据本人多次试用的结果来看,好象用我的笨方法快了好多.
只是个人所见,而且也受我的硬件,软件等原因影响,所以只是建议大家可以一试,不一定绝对正确.

2006-11-09 09:50
滚水六脚
Rank: 1
等 级:新手上路
帖 子:132
专家分:0
注 册:2004-8-16
收藏
得分:0 
找了三天,问题终于找了:

“排序:order by


在没有索引且有重复值且有空值的字段上排序速度最慢,所以要不允许空,这样之后才可以建立索引;尽可能的避免重复,这样可建立排序最快的唯一索引或聚集索引。”


试了N多方法,没用,请大侠指教:



SELECT Top 1000 seekerID,trueName,gender,age,MaxEduLevel,maxEduSchool,maxEduCourse,LastUpdateDate,WorkPos FROM v_seekerInfo WHERE isvalid = 1 AND ( MaxEduLevel >= 20 AND MaxEduLevel <= 70) AND (age >= 18 AND age <= 60) AND abs(DateDiff(d,Getdate(),LastUpdateDate))<=90 and ((Expr1 like '%人事%') Or (Expr1 like '%采购%') ) GROUP BY seekerID,trueName,gender,age,MaxEduLevel,maxEduSchool,maxEduCourse,WorkPos,LastUpdateDate ORDER BY lastUpdateDate DESC
加上 ORDER BY lastUpdateDate DESC 慢的原因是因为lastUpdateDate设置后台刷新,重复的数据不下6万!
现在怎么解救才好?

[此贴子已经被作者于2006-11-9 17:34:27编辑过]

2006-11-09 17:33
快速回复:[求助]数据库查询问题,急晕了~
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016886 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved