| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1595 人关注过本帖
标题:SQL查询超时
只看楼主 加入收藏
hudong
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2010-3-7
结帖率:100%
收藏
已结贴  问题点数:10 回复次数:2 
SQL查询超时
我用VB做了一个数据库查询,查询语句如下,在很多服务器上试过,某些服务器查询时错误提示“'80040e31' ([ODBC SQL Server Driver]超时已过期)”。在网上查了很多关于这个方法的解决办法,
其中参见这个地址的解决办法:http://bbs.dg.,但始终没有得到彻底解决,经测试该语句在SQL查询分析器里运行正常,很多机器不同帐套测试也能查询,就是某些机器查询报错,如果在SQL企业管理器收缩一次数据库,将事物日志文件收缩一次,日志大小变成504K,然后软件就能正常运行查询,但由于数据库使用频繁,不一会事物日志就会增大,1天之内就会增大到20多M,如果限制事物日志增长,很多软件操作将无法完成,也尝试定时收缩数据库事物日志文件,但都没有用,数据库文件只有260M,也不像网上说的达1G后查询变慢的问题,但数据库的其他查询正常,我做的这个查询系统在登陆数据库所用的查询都正常,感觉这个问题既后本身SQL有关,又和事物日志有关,麻烦高手解决。
用到的查询语句如下,还望行家能帮我优化该查询语句
SELECT dbo.billidx.billid, dbo.billidx.billdate, dbo.billidx.billnumber,
      P.serial_number, P.name, P.alias, P.standard, U.name AS Unit1Name,
      dbo.medtype.mt_name AS MedName, P.permitcode, P.makearea, P.Factory,
      C.name AS suppliername, dbo.salemanagebill.batchno, dbo.salemanagebill.validdate,
      dbo.salemanagebill.quantity, dbo.salemanagebill.costprice,
      dbo.salemanagebill.total * dbo.salemanagebill.quantity AS 成本金额,
      dbo.salemanagebill.discountprice, dbo.salemanagebill.totalmoney,
      dbo.salemanagebill.retailprice, dbo.salemanagebill.retailtotal,
      Empa.name AS ename, Emp.name AS inputmanname, C2.name AS cname,
      dbo.storages.name AS ssname
FROM dbo.salemanagebill LEFT OUTER JOIN
      dbo.products P ON dbo.salemanagebill.p_id = P.product_id LEFT OUTER JOIN
      dbo.medtype ON P.medtype = dbo.medtype.mt_id LEFT OUTER JOIN
      dbo.billidx ON dbo.salemanagebill.bill_id = dbo.billidx.billid LEFT OUTER JOIN
      dbo.unit U ON dbo.salemanagebill.unitid = U.unit_id LEFT OUTER JOIN
      dbo.clients C ON dbo.salemanagebill.supplier_id = C.client_id LEFT OUTER JOIN
      dbo.employees Emp ON dbo.billidx.inputman = Emp.emp_id LEFT OUTER JOIN
      dbo.employees Empa ON dbo.billidx.e_id = Empa.emp_id LEFT OUTER JOIN
      dbo.clients C2 ON dbo.billidx.c_id = C2.client_id LEFT OUTER JOIN
      dbo.storages ON dbo.salemanagebill.ss_id = dbo.storages.storage_id
ORDER BY dbo.billidx.billid
搜索更多相关主题的帖子: 查询 超时 SQL 
2010-03-13 23:54
三断笛
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:31
帖 子:1621
专家分:1617
注 册:2007-5-24
收藏
得分:10 
语句没多少优化的,光看你的语句不好提供准确的优化信息.不过可以关注一下下面这些方面:
1.磁盘空间是否足够
2.内存及内存分配是否足够
3.查询执行计划,找出性能瓶颈(是否在多表Hash连接?)
4.索引建立是否恰当,建立合适的聚集索引能很大程度提高速度.如果表中数据是已经排好序的,可以用Left Merge Join,此时会比Hash Join效率高很多
5.优化表结果,建立适当的数据冗余以减少表连接,或者将数据尽量先写入某个单表再对其进行查询.
2010-03-17 00:04
xingxingd32
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2010-3-20
收藏
得分:0 
表的连接数大于5个就会出现超时的现象

人因梦想而伟大,因务实而成真!
2010-03-20 16:57
快速回复:SQL查询超时
数据加载中...
 
   



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

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