PHP和SQL过程访问数据量大的表,急!!!!高分求助.

b634294 2007-01-08 04:00:59
我用PHP和SQL数据库,做一个查询系统.在PHP中提供多个限制条件用户随意选择,其中必须包括一个数量(表示用户要选择多少个编号),然后查询符合条件的产品编号,并将产品编号保存成文本.根据限制条件查询出符合条件的编号并生成文本,我是放在一个SQL过程里做的,在过程的最后返回一个数量表示实际有多少编号被选种.然后在PHP中调用这个过程.
global $database;
$sql="exec update_MobileUserInfo '".$_SESSION['loginname']."','".trim($data[CusID])."','".$citystr."','".$cardstr."','".$tmstr."','".$pricstr."','".$data[SelType][0]."','".$data[RepYN][0]."','".trim($data[IdeNum])."','".$sexs."','".$sexl."'";
$all=$database->GetOne($sql);
if ($all)
{
$result=array($all,$filename);
return $result;
}else {
$this->error = "查询结果为空";
return false;
}
查询大体是这么写的:
SET @strSql='Insert Into ##ServiceTemp(MobileNO) SELECT top '+@IdeNum+' MobileNO '
SET @strSql=@strSql+'FROM A,B,C'
SET @strSql=@strSql+' where A.MobileCard=B.ID and A.MobileType=C.ID and '+@str
SET @strSql=@strSql+' order by MobileNO '
SET @strSql=@strSql+@str3
exec (@strSql)
if @@error <> 0
begin
DROP TABLE ##ServiceTemp
return -1
end
@str是根据传递到过程的参数组合的一个限制条件,我将查询出的具体编号放到全局临时表里等待输出.
上面的代码省略了很多,包括对全局临时表的操作.我为了测试,在过程的最后返回一个具体非零值5.这样就是查询还是按照实际情况查询,但返回的都是成功,5.
目前查询的A表数据有几千万.
症状是当用户输入的想查询的编号数量比较大时,如30万,实际数据库中有足够的数据.可PHP返回的有时就是我设定的5,有时就是;查询结果为空.非常不稳定.这到底是怎么回事呢?
...全文
362 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
b634294 2007-01-10
  • 打赏
  • 举报
回复
已解决,谢谢各位!
ql824 2007-01-10
  • 打赏
  • 举报
回复
楼主,你的连接超时设置有问题.不知道你设置了PHP.INI中的查询超时了没有:mssql.timeout = 60 默认是60S,如果60S内过程没有执行完,那么就会报错的.
caotian2000 2007-01-09
  • 打赏
  • 举报
回复
确实是,一会中午的时候好好看一下你的存储过程
b634294 2007-01-09
  • 打赏
  • 举报
回复
我想问的是,造成我这种现象的原因和解决办法,连原因都没明确找到,大家提的这些都只是试探性的方法.
b634294 2007-01-09
  • 打赏
  • 举报
回复
TO caotian2000(乡约北京):
存储过程你看了吗,有什么建议吗?
hymxtang 2007-01-09
  • 打赏
  • 举报
回复
学习~
ql824 2007-01-09
  • 打赏
  • 举报
回复
关注中...
lzkd 2007-01-08
  • 打赏
  • 举报
回复
目前查询的A表数据有几千万.

*************************

有必要一个表里放这么多吗?考虑把表拆分一下吧
b634294 2007-01-08
  • 打赏
  • 举报
回复
TO axaw(天太热了):
A表的编号字段类型是:biginit类型,在过程中创建的全局临时表##ServiceTemp的MobileNO也是biginit类型.这是对应的.
axaw 2007-01-08
  • 打赏
  • 举报
回复
数据库的表的字段是类型是否恰当。比如INT UNSIGNED 等
b634294 2007-01-08
  • 打赏
  • 举报
回复
对了,补充一句:我将PHP里生成的调用过程的串,放到查询分析器里执行,无论执行几次,都能成功返回5.
b634294 2007-01-08
  • 打赏
  • 举报
回复
TO axaw(天太热了):
能否说的明白些?
axaw 2007-01-08
  • 打赏
  • 举报
回复
检查一下你的数据类型
b634294 2007-01-08
  • 打赏
  • 举报
回复
TO Darc(注册真烦):
我在PHP中设置了set_time_limit(0);
Darc 2007-01-08
  • 打赏
  • 举报
回复
有没有考虑过连接超时的原因?
b634294 2007-01-08
  • 打赏
  • 举报
回复
拜托各位高手来帮忙!谢谢!!!
问题很急啊!
ishion 2007-01-08
  • 打赏
  • 举报
回复
帮顶,关注
b634294 2007-01-08
  • 打赏
  • 举报
回复
如果分数不够,可以再加!问题很急啊,盼解决办法

21,886

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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