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