是這樣的,有二個表之間有關聯關系。而且二個表的資料量都很大,原來是這樣寫的。
table1.first;
while not table1.eof do
begin
xh:=table1.fieldbyname('xh').asstring;
query1.Close;
query1.SQL.Text:='select * from table2 where xh='''+xh+''';
query1.Open;
if quey1.IsEmpty then exit;
query1.first;
while not query1.eof do
begin
.......
取出的值再進行下一步計算。。。。
end;
end;
這覺得這樣很慢,有沒有比這快的方法。求賜教!
uj5u.com熱心網友回復:
將計算邏輯放入一個SQL中完成。uj5u.com熱心網友回復:
用存盤程序完成。uj5u.com熱心網友回復:
那我上面這個例子用存盤程序怎么寫呢?uj5u.com熱心網友回復:
1.改用存盤程序實作邏輯2.包上disablecontrol和enablecontrols
uj5u.com熱心網友回復:
直接用SQL計算撒, 查詢出來直接顯示uj5u.com熱心網友回復:
select * from table2 where exists (select xh from table1 where table2.xh=table1.xh) order by xh然后回圈這里面的每條記錄行了。
uj5u.com熱心網友回復:
while回圈都是0.X微妙級別的.跟你的Query1.Open比起來一個天上一個地下.把你的Query1一次性都查出來,然后在本地再做一次While找比你一次次操作資料庫快多了.
uj5u.com熱心網友回復:
使用存盤程序,應該比原代碼較快。uj5u.com熱心網友回復:
存盤程序 用的很少,我mark這個貼,今后學習一下。轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/131910.html
標籤:數據庫相關
上一篇:讀取二進制欄位值
