用MonitorViewer测试。第一种情况,在过滤条件前加上aa.DataSet.Close;在过滤条件之后加上aa.Dataset.Open(aa为数据集)。这种情况下产生三条sql语句
"SELECT * FROM T_OUTFILE
WHERE (T_OUTFILE.F_STATUS = '2' and T_OUTFILE.F_ISREPORT = 'F' and T_OUTFILE.F_ORGANIZATION = _FE35D411AA6A42609510290B4DFE819C) AND (F_OUTGOINGDATE BETWEEN TO_DATE('2004-1-1', 'YYYY-MM-DD') AND TO_DATE('2004-12-31', 'YYYY-MM-DD')";
SELECT TDEPT.FDISPLAYNAME,TDEPT.FID FROM TDEPT WHERE TDEPT.FKIND = '.DPT'";
SELECT TPERSON.FDISPLAYNAME, TPERSON.FID,
用时分别为250ms,16ms,15ms;
第二种情况,不加close和open.产生一条sql语句,
‘SELECT *
FROM T_OUTFILE
WHERE (T_OUTFILE.F_STATUS = '2' and T_OUTFILE.F_ISREPORT = 'F' and T_OUTFILE.F_ORGANIZATION = :_FE497F8FFE5845DFA1F2DA7F08E18A6A ) AND (F_OUTGOINGDATE BETWEEN TO_DATE('2004-1-1', 'YYYY-MM-DD') AND TO_DATE('2004-12-31', 'YYYY-MM-DD')’
用时282ms。
请问哪一种情况效率更高一些。 |