在一个仓储管理系统中,某表中有许多中物品,现根据时间段来统计每一种物品在时间段内的出货、入货的情况。
环境: SQL SERVER7.0 ENGLISH, WIN2000 SERVER, DELPHI6.0
问题: 共有物品1054种,前275种统计速度还可以,但到276种时,速度突然慢下来,变得不能忍受,不知是何原因??
SQL SENTENCE:
SELECT SUM(JIANSHU),SUM(JINGZHONG) FROM VIEWRUKUPINGZHONG WHERE STARTTIME>'2004-07-01' AND ENDTIME<'2004-07-31'
AND LEIBIE=:LEIBIE AND PINGZHONG=:PINGZHONG AND PINGMING=:PINGMING AND GANGZHI=:GANGZHI AND YANSHE=:YANSHE (每一种物品LEIBIE,PINGZHONG,PINGMING,GANGZHI,YANSHE的组合均不重)请赐教!!!!!!!!!!!!!!!
环境: SQL SERVER7.0 ENGLISH, WIN2000 SERVER, DELPHI6.0
问题: 共有物品1054种,前275种统计速度还可以,但到276种时,速度突然慢下来,变得不能忍受,不知是何原因??
SQL SENTENCE:
SELECT SUM(JIANSHU),SUM(JINGZHONG) FROM VIEWRUKUPINGZHONG WHERE STARTTIME>'2004-07-01' AND ENDTIME<'2004-07-31'
AND LEIBIE=:LEIBIE AND PINGZHONG=:PINGZHONG AND PINGMING=:PINGMING AND GANGZHI=:GANGZHI AND YANSHE=:YANSHE (每一种物品LEIBIE,PINGZHONG,PINGMING,GANGZHI,YANSHE的组合均不重)请赐教!!!!!!!!!!!!!!!
STARTTIME,ENDTIME,LEIBIE,PINGZHONG,PINGMING,GANGZHI,YANSHE
将这些where 后面出现的字段建立一个组合索引
该视图有一个主表和一个明细表组成,主表有索引(入库单号),LEIBIE,PINGZHONG,PINGMING,GANGZHI,YANSHE是属性,未建索引但,为何查询性能突然下降了呢?
先排好序
这样做有依据吗?
我感觉像是DELPHI造成的,不像是SQLSERVER的错误,
我是先统计出所有物品种类(组合LEIBIE,PINGMING,。。),再对各种物品进行各种数据统计的,使用一个循环来做(对一种物品需做四种统计,每一种一个SELECT语句),但不管循环里做多少SELECT,一到276种物品(循环)速度就变慢了。
如果你确认慢下来不是服务器的原因,这样设置一下客户端:
ADOConnection1.CursorLocation:=clUseClient;
ADOQuery1.CursorLocation:=clUseClient;
ADOQuery1.CursorType:=ctStatic;
ADOQuery1.LockType:=ltBatchOptimistic;
ADOQuery1.CacheSize:=1000;
//打开数据集后,执行盾环前
ADOQuery1.Connection:=nil;
//执行循环
表现如下:速度正常时,服务器的CPU资源占用率为80%左右,
一旦速率慢下来时,发现服务器的CPU资源占用率为100%,感觉服务器突然响应不过来了,才会使速率慢下来。
看来问题还是出在SQL SERVER上(不管是内存了还是CPU)。
新的问题又来了,望大家多提宝贵意见。
如何才能将这个LOG缩到50M??,似乎限制LOG的大小,不让它随意增长还不行??