sqlserver如何提高執行效率﹖
while not OSRPTDM.TblByPJPODue.Eof do//這里大概循環100次
begin
Close;
SQL.Clear;
SQL.Add(' Select PONO,PartNo,Sum(Qty) as RecvQty ');
SQL.Add(' from wis_admin.GRItem where ');
SQL.Add(' GRNo in (select GRNo from wis_admin.GRN ');
SQL.Add(' where RDate < :RDate and Posted=''Y'' )');
SQL.Add(' and PONo = :PONo and PartNo = :PartNo ');
SQL.Add(' Group by PONO,PartNo');
ParamByName('PONo').asstring:=OSRPTDM.TblByPJPODue.FieldByName('PONo').AsString;
ParamByName('PartNo').asstring:=OSRPTDM.TblByPJPODue.FieldByName('PartNo').AsString;
ParamByName('RDate').asDateTime:=DateTimePicker2.Date;
if not prepared then prepare;
Open;
表wis_admin.GRItem有221334條記錄﹐表wis_admin.GRN有65271條記錄﹐每次運行等結果要5分鐘以上﹐請問如何減少這個時間,求高手指教啊
[解决办法]
然后一次性执行:
select 。。。
from wis_admin.GRItem a
left join OSRPTDM.TblByPJPODue b on a.PONo = b.PONo and a.PartNo = b.PartNo
where GRNo in (
select GRNo from wis_admin.GRN where RDate < :RDate and Posted='Y')
--如果需要进一步优化,可以使用临时表
)
and b.pono is not null
用临时表有些时候很有效果。
[解决办法]